o
    h                     @   s  d Z ddlmZ ddlmZ ddlmZ ddlmZ i dddgd	g d
dddgddgdg dddddddddg dddddddddddd d!d"d#di d$dd%d&d'd(d)dd*d+d,d-d.d/d0d1d2d3dgd4d5d6d7d8d7d9d:d;ed<egd=ed>egeegd?d?d?d?d?d@dAd?dBdCdDdEZ	g dFZ
g dGZdHdI ZdJdK ZG dLdM dMZede	e
ZdNdO Zee dS )Pa  
Settings for REST framework are all namespaced in the REST_FRAMEWORK setting.
For example your project's `settings.py` file might look like this:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.TemplateHTMLRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',
    ],
}

This module provides the `api_setting` object, that is used to access
REST framework settings, checking for user settings first, then falling
back to the defaults.
    )settings)setting_changed)import_string)ISO_8601DEFAULT_RENDERER_CLASSESz%rest_framework.renderers.JSONRendererz-rest_framework.renderers.BrowsableAPIRendererDEFAULT_PARSER_CLASSES)z!rest_framework.parsers.JSONParserz!rest_framework.parsers.FormParserz&rest_framework.parsers.MultiPartParserDEFAULT_AUTHENTICATION_CLASSESz3rest_framework.authentication.SessionAuthenticationz1rest_framework.authentication.BasicAuthenticationDEFAULT_PERMISSION_CLASSESz#rest_framework.permissions.AllowAnyDEFAULT_THROTTLE_CLASSES!DEFAULT_CONTENT_NEGOTIATION_CLASSz4rest_framework.negotiation.DefaultContentNegotiationDEFAULT_METADATA_CLASSz&rest_framework.metadata.SimpleMetadataDEFAULT_VERSIONING_CLASSNDEFAULT_PAGINATION_CLASSDEFAULT_FILTER_BACKENDSDEFAULT_SCHEMA_CLASSz)rest_framework.schemas.openapi.AutoSchemaDEFAULT_THROTTLE_RATES)useranonNUM_PROXIES	PAGE_SIZESEARCH_PARAMsearchORDERING_PARAMorderingDEFAULT_VERSIONALLOWED_VERSIONSVERSION_PARAMversionUNAUTHENTICATED_USERz(django.contrib.auth.models.AnonymousUserUNAUTHENTICATED_TOKENVIEW_NAME_FUNCTIONz"rest_framework.views.get_view_nameVIEW_DESCRIPTION_FUNCTIONz)rest_framework.views.get_view_descriptionEXCEPTION_HANDLERz&rest_framework.views.exception_handlerNON_FIELD_ERRORS_KEYnon_field_errorsTEST_REQUEST_RENDERER_CLASSESz*rest_framework.renderers.MultiPartRendererTEST_REQUEST_DEFAULT_FORMAT	multipartURL_FORMAT_OVERRIDEformatFORMAT_SUFFIX_KWARGURL_FIELD_NAMEurlDATE_FORMATDATE_INPUT_FORMATSDATETIME_FORMATDATETIME_INPUT_FORMATSTi  zMore than {count} items...readdelete)retrievedestroy)TIME_FORMATTIME_INPUT_FORMATSUNICODE_JSONCOMPACT_JSONSTRICT_JSONCOERCE_DECIMAL_TO_STRINGUPLOADED_FILES_USE_URLHTML_SELECT_CUTOFFHTML_SELECT_CUTOFF_TEXTSCHEMA_COERCE_PATH_PKSCHEMA_COERCE_METHOD_NAMES)r   r   r   r	   r
   r   r   r   r   r   r   r"   r%   r   r   r    r!   )PAGINATE_BYPAGINATE_BY_PARAMMAX_PAGINATE_BYc                    sD   | du rdS t | trt|  S t | ttfr  fdd| D S | S )zm
    If the given setting is a string import notation,
    then perform the necessary import or imports.
    Nc                    s   g | ]}t | qS  )import_from_string).0itemsetting_namerC   Y/var/www/html/optinet_system/venv/lib/python3.10/site-packages/rest_framework/settings.py
<listcomp>   s    z"perform_import.<locals>.<listcomp>)
isinstancestrrD   listtuple)valrH   rC   rG   rI   perform_import   s   

rP   c              
   C   s@   zt | W S  ty } zd| ||jj|f }t|d}~ww )zA
    Attempt to import a class from a string representation.
    z3Could not import '%s' for API setting '%s'. %s: %s.N)r   ImportError	__class____name__)rO   rH   emsgrC   rC   rI   rD      s   
rD   c                   @   s>   e Zd ZdZdddZedd Zdd Zd	d
 Zdd Z	dS )APISettingsaV  
    A settings object that allows REST Framework settings to be accessed as
    properties. For example:

        from rest_framework.settings import api_settings
        print(api_settings.DEFAULT_RENDERER_CLASSES)

    Any setting with string import paths will be automatically resolved
    and return the class, rather than the string literal.

    Note:
    This is an internal class that is only compatible with settings namespaced
    under the REST_FRAMEWORK name. It is not intended to be used by 3rd-party
    apps, and test helpers like `override_settings` may not work as expected.
    Nc                 C   s0   |r|  || _|pt| _|pt| _t | _d S )N)!_APISettings__check_user_settings_user_settingsDEFAULTSdefaultsIMPORT_STRINGSimport_stringsset_cached_attrs)selfuser_settingsrZ   r\   rC   rC   rI   __init__   s
   

zAPISettings.__init__c                 C   s   t | dsttdi | _| jS )NrX   REST_FRAMEWORK)hasattrgetattrr   rX   )r_   rC   rC   rI   r`      s   
zAPISettings.user_settingsc                 C   sr   || j vrtd| z| j| }W n ty    | j | }Y nw || jv r+t||}| j| t| || |S )NzInvalid API setting: '%s')	rZ   AttributeErrorr`   KeyErrorr\   rP   r^   addsetattr)r_   attrrO   rC   rC   rI   __getattr__   s   


zAPISettings.__getattr__c                 C   s*   d}t D ]}||v rtd||f q|S )Nz9https://www.django-rest-framework.org/api-guide/settings/zOThe '%s' setting has been removed. Please refer to '%s' for available settings.)REMOVED_SETTINGSRuntimeError)r_   r`   SETTINGS_DOCsettingrC   rC   rI   __check_user_settings   s   z!APISettings.__check_user_settingsc                 C   s<   | j D ]}t| | q| j   t| drt| d d S d S )NrX   )r^   delattrclearrc   )r_   ri   rC   rC   rI   reload   s   


zAPISettings.reload)NNN)
rS   
__module____qualname____doc__ra   propertyr`   rj   rW   rr   rC   rC   rC   rI   rV      s    

rV   c                  O   s    |d }|dkrt   d S d S )Nrn   rb   )api_settingsrr   )argskwargsrn   rC   rC   rI   reload_api_settings   s   rz   )ru   django.confr   django.core.signalsr   django.utils.module_loadingr   rest_frameworkr   rY   r[   rk   rP   rD   rV   rw   rz   connectrC   rC   rC   rI   <module>   s    #&)*-./2367:;>BEFGJKMNPh@