3
Ah`
                 @   sX   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 dZ
dZG dd	 d	eZd
S )    )BaseCommand)import_string)	renderers)coreapi)SchemaGeneratoropenapir   c               @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )Commandz,Generates configured API schema for project.c             C   s   t j rtS tS )N)r   Z
is_enabledCOREAPI_MODEOPENAPI_MODE)self r   `/tmp/pip-build-9m32_hle/djangorestframework/rest_framework/management/commands/generateschema.pyget_mode   s    zCommand.get_modec             C   s   |j dddtd |j ddd td |j ddd td | j tkr^|j d	d
dddgdtd n|j d	d
ddgdtd |j ddd td |j ddd td |j ddd td d S )Nz--titletitle )destdefaulttypez--urlurlz--descriptiondescriptionz--formatformatr   zopenapi-jsoncorejson)r   choicesr   r   z	--urlconfurlconfz--generator_classgenerator_classz--filefile)add_argumentstrr   r	   )r   parserr   r   r   add_arguments   s    zCommand.add_argumentsc       	   	   O   s   |d rt |d }n| j }||d |d |d |d d}|jd dd}| j|d	 }|j|i d
}|d rt|d d}|j| W d Q R X n| jj|j  d S )Nr   r   r   r   r   )r   r   r   r   T)requestpublicr   )Zrenderer_contextr   wb)	r   get_generator_classZ
get_schemaget_rendererrenderopenwritestdoutdecode)	r   argsoptionsr   	generatorZschemaZrendereroutputfr   r   r   handle   s    zCommand.handlec             C   s@   | j  tkr(tjtjtjd| }| S tjtjd| }| S )N)r   r   zopenapi-json)r   zopenapi-json)r   r	   r   ZCoreJSONRendererZCoreAPIOpenAPIRendererZCoreAPIJSONOpenAPIRendererZOpenAPIRendererZJSONOpenAPIRenderer)r   r   Zrenderer_clsr   r   r   r$   3   s    zCommand.get_rendererc             C   s   | j  tkrtjS tS )N)r   r	   r   r   )r   r   r   r   r#   B   s    zCommand.get_generator_classN)	__name__
__module____qualname__helpr   r   r/   r$   r#   r   r   r   r   r      s   r   N)Zdjango.core.management.baser   Zdjango.utils.module_loadingr   Zrest_frameworkr   Zrest_framework.schemasr   Zrest_framework.schemas.openapir   r
   r	   r   r   r   r   r   <module>   s   