o
    ¤ó·is  ã                   @   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   úwC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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 rZt|d dƒ�}| |¡ W d   ƒ d S 1 sSw   Y  d S | 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    