
    =!gv                         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 dl
mZmZmZ d dlmZmZ dd	lmZmZ dd
lmZmZmZ ddlmZ ddlmZ  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de           Z! G d de           Z" G d de"          Z#dS )    )ImproperlyConfigured)resolve_url)render_to_string)	force_str)Promise)BaseRendererJSONRendererTemplateHTMLRenderer)encodersjson   )redoc_settingsswagger_settings)
VALIDATORSOpenAPICodecJsonOpenAPICodecYaml)Swagger)filter_nonec                   <    e Zd ZdZdZg ZdZed             ZddZ	dS )_SpecRendererz?Base class for text renderers. Handles encoding and validation.utf-8Nc                     t          d |D                       s%J dd                    t                    z               t          | j        | fd|i          S )Nc              3   (   K   | ]}|t           v V  d S N)r   ).0vlds     M/var/www/html/nourish/venv/lib/python3.11/site-packages/drf_yasg/renderers.py	<genexpr>z0_SpecRenderer.with_validators.<locals>.<genexpr>   s'      ;;3*$;;;;;;    zallowed validators are z, 
validators)alljoinr   type__name__)clsr    s     r   with_validatorsz_SpecRenderer.with_validators   s^    ;;
;;;;;nn=VY]YbYbcmYnYn=nnn;CL3&<*DEEEr   c                     | j         s
J d            |                      | j                  }t          |t                    s#t	                                          |||          S |                    |          S )Nzmust override codec_class)codec_classr    
isinstancer   r	   renderencode)selfdata
media_typerenderer_contextcodecs        r   r*   z_SpecRenderer.render   ss    <<!<<<  11$(( 	M  >>((z;KLLL||D!!!r   NN)
r$   
__module____qualname____doc__charsetr    r(   classmethodr&   r*    r   r   r   r      sY        IIGJKF F [F
" 
" 
" 
" 
" 
"r   r   c                       e Zd ZdZdZdZeZdS )OpenAPIRendererz_Renders the schema as a JSON document with the ``application/openapi+json`` specific mime type.zapplication/openapi+jsonopenapiNr$   r2   r3   r4   r.   formatr   r(   r7   r   r   r9   r9   '   s#        ii+JF"KKKr   r9   c                       e Zd ZdZdZdZeZdS )SwaggerJSONRendererzVRenders the schema as a JSON document with the generic ``application/json`` mime type.zapplication/jsonr   Nr;   r7   r   r   r>   r>   .   s#        ``#JF"KKKr   r>   c                       e Zd ZdZdZdZeZdS )SwaggerYAMLRendererz&Renders the schema as a YAML document.zapplication/yamlyamlN)r$   r2   r3   r4   r.   r<   r   r(   r7   r   r   r@   r@   5   s#        00#JF"KKKr   r@   c                   @    e Zd ZdZdZdZdZddZddZd Z	d	 Z
d
 ZdS )_UIRendererzbBase class for web UI renderers. Handles loading and passing settings to the appropriate template.z	text/htmlr    Nc                 N   t          |t                    s_	 t                                          |||          S # t          $ r. |d         }d|j        |j                                        fz  cY S w xY w|                     ||           t          | j
        ||d                   S )Nresponsez%d %srequest)r)   r   r
   r*   r   status_codestatus_texttitleset_contextr   template)r,   swaggeraccepted_media_typer/   rF   s        r   r*   z_UIRenderer.renderB   s    '7++ 		VV ,--44W>QScddd' V V V+J7("68L8R8R8T8T!UUUUUV
 	)7333/?AQR[A\]]]s   ": 5A21A2c                 0   |r|j         j        pdnd|d<   |r|j         j        pdnd|d<   t          j        |                                 t          j                  |d<   t          j	        |d<   |
                    |                                            d S )NrD   rJ   versionr%   oauth2_configUSE_SESSION_AUTH)inforJ   rP   r   dumpsget_oauth2_configr   JSONEncoderr   rS   updateget_auth_urls)r,   r/   rM   s      r   rK   z_UIRenderer.set_contextQ   s    @G$OGL$6$<"R!DK&Sgl&:&@bQS#,0Jt7M7M7O7OU]Ui,j,j,j)/?/P+, 2 2 4 455555r   c                    t          |t                    rt          |          }|d S d\  }}t          |t                    s2t          |          dk    r|\  }}}nt          |          dk    r|\  }}|pd}|pi }t	          |g|R i |S )Nr1      r7   )r)   r   strlenr   )r,   toargskwargss       r   r   z_UIRenderer.resolve_urlX   s    b'"" 	RB:4!f"c"" 	 2ww{{#% D&&RA
Fzr22///////r   c                     |                      t          j                  |                      t          j                  d}t	          |          S )N)	LOGIN_URL
LOGOUT_URL)r   r   rb   rc   r   )r,   urlss     r   rY   z_UIRenderer.get_auth_urlsk   sH    ))*:*DEE**+;+FGG
 

 4   r   c                 \    t           j        }t          |t                    s
J d            |S )NzOAUTH2_CONFIG must be a dict)r   OAUTH2_CONFIGr)   dictr,   r-   s     r   rV   z_UIRenderer.get_oauth2_configs   s.    -$%%EE'EEE%r   r1   r   )r$   r2   r3   r4   r.   r5   rL   r*   rK   r   rY   rV   r7   r   r   rC   rC   <   s        llJGH^ ^ ^ ^6 6 6 60 0 0&! ! !    r   rC   c                   2     e Zd ZdZdZdZd fd	Zd Z xZS )SwaggerUIRendererz7Renders a swagger-ui web interface for schema browsing.zdrf-yasg/swagger-ui.htmlrM   Nc                 r   t          t          |                               ||           |                                 }|                    dd           }t          |                    dd                    }|r|r|                    |          |d<   t          j        |t          j
                  |d<   d S )NrG   oauth2RedirectUrlrD   rQ   r   )superrj   rK   get_swagger_ui_settingsgetr   build_absolute_urir   rU   r   rW   )r,   r/   rM   swagger_ui_settingsrG   oauth_redirect_url	__class__s         r   rK   zSwaggerUIRenderer.set_context~   s    &&223CWMMM"::<<"&&y$77&':'>'>?RTV'W'WXX 	f) 	f7>7Q7QRd7e7e 34/3z:MS[Sg/h/h/h+,,,r   c                    i d|                      t          j                  dt          j        dt          j        dt          j        dt          j        dt          j        dt          j        dt          j	        d	t          j	        d
t          j
        dt          j        dt          j        dt          j        dt          j        dt          j        dt          j        dt          j        t          j        t          j        dd                              dd          d}t+          |          }t          j        dk    r"|                      t          j                  |d<   |S )NurloperationsSorter
tagsSorterdocExpansiondeepLinkingshowExtensionsdefaultModelRenderingdefaultModelExpandDepthdefaultModelsExpandDepthshowCommonExtensionsrl   supportedSubmitMethodsdisplayOperationIdpersistAuthrefetchWithAuthrefetchOnLogoutfetchSchemaWithQuery   _-)
csrfCookie
csrfHeaderrD   validatorUrl)r   r   SPEC_URLOPERATIONS_SORTERTAGS_SORTERDOC_EXPANSIONDEEP_LINKINGSHOW_EXTENSIONSDEFAULT_MODEL_RENDERINGDEFAULT_MODEL_DEPTHSHOW_COMMON_EXTENSIONSOAUTH2_REDIRECT_URLSUPPORTED_SUBMIT_METHODSDISPLAY_OPERATION_IDPERSIST_AUTHREFETCH_SCHEMA_WITH_AUTHREFETCH_SCHEMA_ON_LOGOUTFETCH_SCHEMA_WITH_QUERYCSRF_COOKIE_NAMECSRF_HEADER_NAMEreplacer   VALIDATOR_URLrh   s     r   rn   z)SwaggerUIRenderer.get_swagger_ui_settings   s   
4##$4$=>>
 0 B
 *6
 ,:	

 +8
 .>
 $%5%M
 &'7'K
 '(8(L
 #$4$K
  !1!E
 %&6&O
 !"2"G
 +8
 /H
  /H!
" #$4$L#
$ +;*;ABB?GGSQQ)
 
 
. 4  )R//#'#3#34D4R#S#SD r   r   )	r$   r2   r3   r4   rL   r<   rK   rn   __classcell__rs   s   @r   rj   rj   y   sb        AA)HF	i 	i 	i 	i 	i 	i      r   rj   c                   2     e Zd ZdZdZdZd fd	Zd Z xZS )ReDocRendererz2Renders a ReDoc web interface for schema browsing.zdrf-yasg/redoc.htmlredocNc                     t          t          |                               ||           t          j        |                                 t          j                  |d<   d S )NrQ   r   )rm   r   rK   r   rU   get_redoc_settingsr   rW   )r,   r/   rM   rs   s      r   rK   zReDocRenderer.set_context   sU    mT""../?III-1Z8O8O8Q8QW_Wk-l-l-l)***r   c           	          |                      t          j                  t          j        t          j        t          j        t          j        t          j        t          j        t          j	        d}t          |          S )N)ru   lazyRenderinghideHostnameexpandResponsespathInMiddlePanelnativeScrollbarsrequiredPropsFirstr   )r   r   r   LAZY_RENDERINGHIDE_HOSTNAMEEXPAND_RESPONSESPATH_IN_MIDDLENATIVE_SCROLLBARSREQUIRED_PROPS_FIRSTr   r   rh   s     r   r   z ReDocRenderer.get_redoc_settings   s\    ##N$;<<+:*8->!/!> . @"0"E$2$J	
 	
 4   r   r   )	r$   r2   r3   r4   rL   r<   rK   r   r   r   s   @r   r   r      sb        <<$HFm m m m m m! ! ! ! ! ! !r   r   c                       e Zd ZdZdZdS )ReDocOldRendererz8Renders a ReDoc 1.x.x web interface for schema browsing.zdrf-yasg/redoc-old.htmlN)r$   r2   r3   r4   rL   r7   r   r   r   r      s        BB(HHHr   r   N)$django.core.exceptionsr   django.shortcutsr   django.template.loaderr   django.utils.encodingr   django.utils.functionalr   rest_framework.renderersr   r	   r
   rest_framework.utilsr   r   app_settingsr   r   codecsr   r   r   r:   r   utilsr   r   r9   r>   r@   rC   rj   r   r   r7   r   r   <module>r      sK   7 7 7 7 7 7 ( ( ( ( ( ( 3 3 3 3 3 3 + + + + + + + + + + + + U U U U U U U U U U / / / / / / / / : : : : : : : : B B B B B B B B B B            " " " " "L " " "0# # # # #m # # ## # # # #- # # ## # # # #- # # #: : : : :, : : :z, , , , , , , ,^! ! ! ! !K ! ! !0) ) ) ) )} ) ) ) ) )r   