
    Vwg                         d dl Z d dlmZ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 d dlmZ d d	lmZ d
dlmZ d
dlmZmZmZmZ ej2                  ZeefeefeeefdZd Z	 	 ddZy)    N)WRAPPER_ASSIGNMENTSwrapsadd_never_cache_headers)
cache_page)vary_on_headers)
exceptions)Response)api_settings)APIView   )swagger_settings)ReDocOldRendererReDocRendererSwaggerUIRenderer_SpecRenderer)swaggerredocz	redoc-oldc                 :     t         t               fd       }|S )zX
    Decorator that adds headers to a response so that it will
    never be cached.
    )assignedc                 H     | g|i |}d }|j                  |       |S )Nc                     t        |        | S Nr   )responses    E/var/www/horilla/myenv/lib/python3.12/site-packages/drf_yasg/views.pycallbackzBdeferred_never_cache.<locals>._wrapped_view_func.<locals>.callback*   s    #H-O    )add_post_render_callback)requestargskwargsr   r   	view_funcs        r   _wrapped_view_funcz0deferred_never_cache.<locals>._wrapped_view_func"   s1    W6t6v6	 	))(3r   )r   r   )r"   r#   s   ` r   deferred_never_cacher$      s'     923 4 r   c	                 ,   
 ||xs t         j                  |

t        j                  
|t        j                   xs t         j
                   xs g t        fdt        D               G 
 f	ddt              }	|	S )a  Create a SchemaView class with default renderers and generators.

    :param Info info: information about the API; if omitted, defaults to :ref:`DEFAULT_INFO <default-swagger-settings>`
    :param str url: same as :class:`.OpenAPISchemaGenerator`
    :param patterns: same as :class:`.OpenAPISchemaGenerator`
    :param urlconf: same as :class:`.OpenAPISchemaGenerator`
    :param bool public: if False, includes only the endpoints that are accessible by the user viewing the schema
    :param list validators: a list of validator names to apply; the only allowed value is ``ssv``, for now
    :param type generator_class: schema generator class to use; should be a subclass of :class:`.OpenAPISchemaGenerator`
    :param list authentication_classes: authentication classes for the schema view itself
    :param list permission_classes: permission classes for the schema view itself
    :return: SchemaView class
    :rtype: type[drf_yasg.views.SchemaView]
    c              3   @   K   | ]  }|j                          y wr   )with_validators).0renderer
validatorss     r   	<genexpr>z"get_schema_view.<locals>.<genexpr>N   s     `XH44Z@`s   c                      	 e Zd ZdZdZW ZW ZW  ZW ZW Z	dfd	Z
ed        Zed	d       Zed	fd	       Zed
fd	       Zy)#get_schema_view.<locals>.SchemaViewTNc                 0   |j                   xs |xs d}t        |j                  t              r| j	                  |	      }n| j	                  |g       }|j                  || j                        }|t        j                         t        |      S )N )patterns)
version
isinstanceaccepted_rendererr   generator_class
get_schemapublicr	   PermissionDeniedr
   )
selfr   r1   format	generatorschemainfor0   urlurlconfs
         r   getz'get_schema_view.<locals>.SchemaView.getY   s    oo66BG'33]C 00wXwW	 00wb0Q	))'4;;?F~ 1133F##r   c                 d     t        dd      |      } t        |fi ||      }t        |      }|S )zOverride this method to customize how caching is applied to the view.

            Arguments described in :meth:`.as_cached_view`.
            CookieAuthorization)r   r   r$   )clsviewcache_timeoutcache_kwargss       r   apply_cachez/get_schema_view.<locals>.SchemaView.apply_cachee   s<     >?8_=dCD<:m<|<TBD'-DKr   c                     |xs i } | j                   di |}|dk7  r| j                  |||      }|S |rt        j                  d       |S )a  
            Calls .as_view() and wraps the result in a cache_page decorator.
            See https://docs.djangoproject.com/en/dev/topics/cache/

            :param int cache_timeout: same as cache_page; set to 0 for no cache
            :param dict cache_kwargs: dictionary of kwargs to be passed to cache_page
            :param initkwargs: kwargs for .as_view()
            :return: a view instance
            r   z:cache_kwargs ignored because cache_timeout is 0 (disabled) )as_viewrG   warningswarn)rC   rE   rF   
initkwargsrD   s        r   as_cached_viewz2get_schema_view.<locals>.SchemaView.as_cached_viewp   sY     (-2L3;;,,D!t]LI K Z[Kr   c                 ,    | j                  ||      S )a  
            Instantiate this view with just JSON and YAML renderers, optionally wrapped with cache_page.
            See https://docs.djangoproject.com/en/dev/topics/cache/.

            :param int cache_timeout: same as cache_page; set to 0 for no cache
            :param dict cache_kwargs: dictionary of kwargs to be passed to cache_page
            :return: a view instance
            renderer_classes)rN   )rC   rE   rF   _spec_rendererss      r   
without_uiz.get_schema_view.<locals>.SchemaView.without_ui   s     %%m\Tc%ddr   c                     |t         v sJ ddj                  t               z          t         |   z   }| j                  |||      S )a  
            Instantiate this view with a Web UI renderer, optionally wrapped with cache_page.
            See https://docs.djangoproject.com/en/dev/topics/cache/.

            :param str renderer: UI renderer; allowed values are ``swagger``, ``redoc``
            :param int cache_timeout: same as cache_page; set to 0 for no cache
            :param dict cache_kwargs: dictionary of kwargs to be passed to cache_page
            :return: a view instance
            z supported default renderers are z, rP   )UI_RENDERERSjoinrN   )rC   r)   rE   rF   rQ   rR   s        r   with_uiz+get_schema_view.<locals>.SchemaView.with_ui   sT     |+i-ORVR[R[\hRi-ii++H5G%%m\Td%eer   )r/   N)r   N)r   r   N)__name__
__module____qualname___ignore_model_permissionsr;   r6   r4   authentication_classespermission_classesrQ   r?   classmethodrG   rN   rS   rW   )	_auth_classes_generator_class_perm_classes_publicrR   r<   r0   r=   r>   s	   r   
SchemaViewr-   P   s    $(!*!.**
	$ 
	$ 
	 
	 
	 
	$ 
		e 
		e 
	f 
	fr   rc   )	r   DEFAULT_GENERATOR_CLASSr   DEFAULT_AUTHENTICATION_CLASSESDEFAULT_PERMISSION_CLASSESDEFAULT_INFOtupleSPEC_RENDERERSr   )r<   r=   r0   r>   r6   r*   r4   r\   r]   rc   r_   r`   ra   rb   rR   s   ```` `    @@@@@r   get_schema_viewrj   4   s      G&R*:*R*R*M$CC&M$??0#00D!rJ`Q_``OMf MfW Mf^ r   )	NNNNFNNNN)rK   	functoolsr   r   django.utils.cacher   django.views.decorators.cacher   django.views.decorators.varyr   rest_frameworkr	   rest_framework.responser
   rest_framework.settingsr   rest_framework.viewsr   app_settingsr   	renderersr   r   r   r   DEFAULT_SPEC_RENDERERSri   rU   r$   rj   rI   r   r   <module>rv      sr     0 6 4 8 % , 0 ( *  "88!=1./"M3DE0 `dZ^kr   