
    Vwgx                      P   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#y)    )ImproperlyConfigured)resolve_url)render_to_string)	force_str)Promise)BaseRendererJSONRendererTemplateHTMLRenderer)encodersjson   )redoc_settingsswagger_settings)
VALIDATORSOpenAPICodecJsonOpenAPICodecYaml)Swagger)filter_nonec                   4    e Zd ZdZdZg ZdZed        ZddZ	y)_SpecRendererz?Base class for text renderers. Handles encoding and validation.utf-8Nc                     t        d |D              sJ ddj                  t              z          t        | j                  | fd|i      S )Nc              3   ,   K   | ]  }|t         v   y wN)r   ).0vlds     I/var/www/horilla/myenv/lib/python3.12/site-packages/drf_yasg/renderers.py	<genexpr>z0_SpecRenderer.with_validators.<locals>.<genexpr>   s     ;3*$;s   zallowed validators are z, 
validators)alljoinr   type__name__)clsr   s     r   with_validatorsz_SpecRenderer.with_validators   sH    ;
;;n=VY]YbYbcmYn=nn;CLL3&<*DEE    c                     | j                   sJ d       | j                  | j                        }t        |t              st	               j                  |||      S |j                  |      S )Nzmust override codec_class)codec_classr   
isinstancer   r	   renderencode)selfdata
media_typerenderer_contextcodecs        r   r*   z_SpecRenderer.render   s^    <!<<  1$(  >((z;KLL||D!!r&   NN)
r#   
__module____qualname____doc__charsetr   r(   classmethodr%   r*    r&   r   r   r      s-    IGJKF F
"r&   r   c                       e Zd ZdZdZdZeZy)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+JF"Kr&   r9   c                       e Zd ZdZdZdZeZy)SwaggerJSONRendererzVRenders the schema as a JSON document with the generic ``application/json`` mime type.zapplication/jsonz.jsonNr;   r7   r&   r   r>   r>   .   s    `#JF"Kr&   r>   c                       e Zd ZdZdZdZeZy)SwaggerYAMLRendererz&Renders the schema as a YAML document.zapplication/yamlz.yamlN)r#   r2   r3   r4   r.   r<   r   r(   r7   r&   r   r@   r@   5   s    0#JF"Kr&   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y)_UIRendererzbBase class for web UI renderers. Handles loading and passing settings to the appropriate template.z	text/htmlr    Nc                 ,   t        |t              s	 t               j                  |||      S | j                  ||       t        | j                  ||d         S # t        $ r1 |d   }d|j
                  |j                  j                         fz  cY S w xY w)Nresponsez%d %srequest)r)   r   r
   r*   r   status_codestatus_texttitleset_contextr   template)r,   swaggeraccepted_media_typer/   rE   s        r   r*   z_UIRenderer.renderB   s    '7+V ,-44W>QScdd 	)73/?AQR[A\]] ( V+J7("6"68L8L8R8R8T!UUUVs   A 7BBc                 X   |r|j                   j                  xs dnd|d<   |r|j                   j                  xs dnd|d<   t        j                  | j                         t        j                        |d<   t        j                  |d<   |j                  | j                                y )NrC   rI   versionr$   oauth2_configUSE_SESSION_AUTH)inforI   rO   r   dumpsget_oauth2_configr   JSONEncoderr   rR   updateget_auth_urls)r,   r/   rL   s      r   rJ   z_UIRenderer.set_contextQ   s    @GGLL$6$6$<"R!DKgll&:&:&@bQS#,0JJt7M7M7OU]UiUi,j)/?/P/P+, 2 2 45r&   c                     t        |t              rt        |      }|y d\  }}t        |t              s(t        |      dkD  r|\  }}}nt        |      dk(  r|\  }}|xs d}|xs i }t	        |g|i |S )Nr1      r7   )r)   r   strlenr   )r,   toargskwargss       r   r   z_UIRenderer.resolve_urlX   s    b'"RB:!f"c"2w{#% D&RA
Fzr22////r&   c                     | j                  t        j                        | j                  t        j                        d}t	        |      S )N)	LOGIN_URL
LOGOUT_URL)r   r   ra   rb   r   )r,   urlss     r   rX   z_UIRenderer.get_auth_urlsk   s@    ))*:*D*DE**+;+F+FG

 4  r&   c                 T    t         j                  }t        |t              sJ d       |S )NzOAUTH2_CONFIG must be a dict)r   OAUTH2_CONFIGr)   dictr,   r-   s     r   rU   z_UIRenderer.get_oauth2_configs   s(    --$%E'EE%r&   r1   r   )r#   r2   r3   r4   r.   r5   rK   r*   rJ   r   rX   rU   r7   r&   r   rB   rB   <   s.    lJGH^60&!r&   rB   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.htmlrL   c                 (   t         t        |   ||       | j                         }|j	                  dd       }t        |j	                  dd            }|r|r|j                  |      |d<   t        j                  |t        j                        |d<   y )NrF   oauth2RedirectUrlrC   rP   r   )superri   rJ   get_swagger_ui_settingsgetr   build_absolute_urir   rT   r   rV   )r,   r/   rL   swagger_ui_settingsrF   oauth_redirect_url	__class__s         r   rJ   zSwaggerUIRenderer.set_context~   s    23CWM"::<"&&y$7&':'>'>?RTV'WX)7>7Q7QRd7e 34/3zz:MS[SgSg/h+,r&   c                 R   i d| j                  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  j)                  dd      d}t+        |      }t        j,                  dk7  r"| j                  t        j,                        |d<   |S )NurloperationsSorter
tagsSorterdocExpansiondeepLinkingshowExtensionsdefaultModelRenderingdefaultModelExpandDepthdefaultModelsExpandDepthshowCommonExtensionsrk   supportedSubmitMethodsdisplayOperationIdpersistAuthrefetchWithAuthrefetchOnLogoutfetchSchemaWithQuery   _-)
csrfCookie
csrfHeaderrC   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_URLrg   s     r   rm   z)SwaggerUIRenderer.get_swagger_ui_settings   s   
4##$4$=$=>
 0 B B
 *66
 ,::	

 +88
 .>>
 $%5%M%M
 &'7'K'K
 '(8(L(L
 #$4$K$K
  !1!E!E
 %&6&O&O
 !"2"G"G
 +88
 /HH
  /HH!
" #$4$L$L#
$ +;;*;;AB?GGSQ)
. 4 ))R/#'#3#34D4R4R#SD r&   r   )	r#   r2   r3   r4   rK   r<   rJ   rm   __classcell__rr   s   @r   ri   ri   y   s    A)HF	ir&   ri   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redocc                     t         t        |   ||       t        j                  | j                         t        j                        |d<   y )NrP   r   )rl   r   rJ   r   rT   get_redoc_settingsr   rV   )r,   r/   rL   rr   s      r   rJ   zReDocRenderer.set_context   s<    mT./?I-1ZZ8O8O8QW_WkWk-l)*r&   c           	      ,   | j                  t        j                        t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  d}t        |      S )N)rt   lazyRenderinghideHostnameexpandResponsespathInMiddlePanelnativeScrollbarsrequiredPropsFirstr   )r   r   r   LAZY_RENDERINGHIDE_HOSTNAMEEXPAND_RESPONSESPATH_IN_MIDDLENATIVE_SCROLLBARSREQUIRED_PROPS_FIRSTr   r   rg   s     r   r   z ReDocRenderer.get_redoc_settings   si    ##N$;$;<+::*88->>!/!>!> . @ @"0"E"E$2$J$J	
 4  r&   r   )	r#   r2   r3   r4   rK   r<   rJ   r   r   r   s   @r   r   r      s    <$HFm!r&   r   c                       e Zd ZdZdZy)ReDocOldRendererz8Renders a ReDoc 1.x.x web interface for schema browsing.zdrf-yasg/redoc-old.htmlN)r#   r2   r3   r4   rK   r7   r&   r   r   r      s
    B(Hr&   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@   rB   ri   r   r   r7   r&   r   <module>r      s    7 ( 3 + + U U / : B B  "L "0#m ##- ##- #:, :z, ,^!K !0)} )r&   