a
    còfs  ã                   @   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   ún/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/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
g d¢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Úformat)r   úopenapi-jsonÚcorejsonr   )r   Úchoicesr   r   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 r°t|d dƒ�}| |¡ W d   ƒ qÀ1 s¤0    Y  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schemaÚ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$   r6   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   