
     h                         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mZmZmZ eeefZeefeefeeefdZd Z	 	 ddZdS )    N)WRAPPER_ASSIGNMENTSwrapsadd_never_cache_headers)
cache_page)vary_on_headers)
exceptions)Response)api_settings)APIView   )swagger_settings)OpenAPIRendererReDocOldRendererReDocRendererSwaggerJSONRendererSwaggerUIRendererSwaggerYAMLRenderer_SpecRenderer)swaggerredocz	redoc-oldc                 J     t           t                     fd            }|S )zX
    Decorator that adds headers to a response so that it will
    never be cached.
    )assignedc                 P     | g|R i |}d }|                     |           |S )Nc                 $    t          |            | S Nr   )responses    J/var/www/html/Sam_Eipo/venv/lib/python3.11/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    sL    9W6t666v66	 	 	 	))(333r    )r   r   )r%   r&   s   ` r   deferred_never_cacher'      s?     92333    43 r    Fc	                    
 ||pt           j        |

t          j        
|t          j         pt           j         p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]
    Nc              3   B   K   | ]}|                               V  d S r   )with_validators).0renderer
validatorss     r   	<genexpr>z"get_schema_view.<locals>.<genexpr>L   s1      ``XH44Z@@``````r    c                      	 e Zd ZdZdZZZ ZZZ	dfd	Z
ed             Zedd            Zedfd	            Zedfd
	            ZdS )#get_schema_view.<locals>.SchemaViewTN c                 2   |j         p|pd}t          |j        t                    r|                     |	          }n|                     |g           }|                    || j                  }|t          j                    t          |          S )Nr1   )patterns)
version
isinstanceaccepted_rendererr   generator_class
get_schemapublicr	   PermissionDeniedr
   )
selfr"   r4   format	generatorschemainfor3   urlurlconfs
         r   getz'get_schema_view.<locals>.SchemaView.getW   s    o66BG'3]CC R 00wXwWW		 00wb0QQ	))'4;??F~ 1333F###r    c                      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_cachec   sN     >?8_==dCCD<:m<<|<<TBBD'--DKr    r   c                     |pi } | j         di |}|dk    r|                     |||          }n|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_viewrJ   warningswarn)rF   rH   rI   
initkwargsrG   s        r   as_cached_viewz2get_schema_view.<locals>.SchemaView.as_cached_viewn   sf     (-2L3;,,,,D!!t]LII \Z[[[Kr    c                 4    |                      ||          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)rQ   )rF   rH   rI   _spec_rendererss      r   
without_uiz.get_schema_view.<locals>.SchemaView.without_ui   s!     %%m\Tc%dddr    r   c                     |t           v s%J dd                    t                     z               t           |         z   }|                     |||          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, rS   )UI_RENDERERSjoinrQ   )rF   r,   rH   rI   rT   rU   s        r   with_uiz+get_schema_view.<locals>.SchemaView.with_ui   s`     |+++-ORVR[R[\hRiRi-i++++H5G%%m\Td%eeer    )r1   N)r   N)r   r   N)__name__
__module____qualname___ignore_model_permissionsr>   r9   r7   authentication_classespermission_classesrT   rB   classmethodrJ   rQ   rV   rZ   )	_auth_classes_generator_class_perm_classes_publicrU   r?   r3   r@   rA   s	   r   
SchemaViewr0   N   s       $(!*!.**
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	$ 
	 	 
	 
	 	 	 
	$ 
		e 		e 		e 		e 		e 
		e 
	f 	f 	f 	f 	f 
	f 	f 	fr    rf   )	r   DEFAULT_GENERATOR_CLASSr   DEFAULT_AUTHENTICATION_CLASSESDEFAULT_PERMISSION_CLASSESDEFAULT_INFOtupleSPEC_RENDERERSr   )r?   r@   r3   rA   r9   r-   r7   r_   r`   rf   rb   rc   rd   re   rU   s   ```` `    @@@@@r   get_schema_viewrm   2   s     G&R*:*R*M$C&M$?0#0D!rJ````Q_`````OMf Mf Mf Mf Mf Mf Mf Mf Mf Mf Mf Mf Mf Mf MfW Mf Mf Mf^ r    )	NNNNFNNNN) rN   	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   r   r   r   rl   rX   r'   rm   rL   r    r   <module>rx      s    0 0 0 0 0 0 0 0 6 6 6 6 6 6 4 4 4 4 4 4 8 8 8 8 8 8 % % % % % % , , , , , , 0 0 0 0 0 0 ( ( ( ( ( ( * * * * * *                 
 &':OL!=1./"M3DE   0 `dZ^k k k k k kr    