o
    =hs                     @   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   i/var/www/ecommerce/venv/lib/python3.10/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   )renderer_contextr   wb)	r   get_generator_class
get_schemaget_rendererrenderopenwritestdoutdecode)	r   argsoptionsr   	generator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   CoreJSONRendererCoreAPIOpenAPIRendererCoreAPIJSONOpenAPIRendererOpenAPIRendererJSONOpenAPIRenderer)r   r   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$   r9   r,   r*   r   r   r   r   r      s    r   N)django.core.management.baser   django.utils.module_loadingr   rest_frameworkr   rest_framework.schemasr   rest_framework.schemas.openapir   r   r   r   r   r   r   r   <module>   s    