U
    ds                     @   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  rtS tS N)r   
is_enabledCOREAPI_MODEOPENAPI_MODEself r   U/tmp/pip-unpacked-wheel-quko9yh2/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 |  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 |j dddtd d S )Nz--titletitle )destdefaulttypez--urlurlz--descriptiondescriptionz--formatformatr   openapi-jsoncorejson)r   choicesr   r   z	--urlconfurlconfz--generator_classgenerator_classz--filefilez--api_versionapi_version)add_argumentstrr   r   )r   parserr   r   r   add_arguments   s    zCommand.add_argumentsc           	   	   O   s   |d rt |d }n|  }||d |d |d |d |d d}|jd dd	}| |d
 }|j|i d}|d rt|d d}|| W 5 Q R X n| j|  d S )Nr   r   r   r   r   r    )r   r   r   r   versionT)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@   |   tkr(tjtjtjd| }| S tjtjd| }| S )N)r   r   r   )r   r   )r   r   r   ZCoreJSONRendererZCoreAPIOpenAPIRendererZCoreAPIJSONOpenAPIRendererZOpenAPIRendererZJSONOpenAPIRenderer)r   r   Zrenderer_clsr   r   r   r*   5   s    zCommand.get_rendererc                 C   s   |   tkrtjS tS r	   )r   r   r   r   r   r   r   r   r)   D   s    zCommand.get_generator_classN)	__name__
__module____qualname__helpr   r$   r5   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   