3
g)                 @   s   d Z ddlZddlZddlZddlZddlZddlmZ ddlZddl	m
Z
 ddlmZ ddlmZ ddlmZmZ dZd	Zd
ZG dd deZG dd deZG dd dZG dd dZe ZdS )z
Settings and configuration for Django.

Read values from the module specified by the DJANGO_SETTINGS_MODULE environment
variable, and then from django.conf.global_settings; see the global_settings.py
for a list of all possible variables.
    N)Path)global_settings)ImproperlyConfigured)RemovedInDjango40Warning)
LazyObjectemptyZDJANGO_SETTINGS_MODULEzZThe PASSWORD_RESET_TIMEOUT_DAYS setting is deprecated. Use PASSWORD_RESET_TIMEOUT instead.zThe DEFAULT_HASHING_ALGORITHM transitional setting is deprecated. Support for it and tokens, cookies, sessions, and signatures that use SHA-1 hashing algorithm will be removed in Django 4.0.c               @   s    e Zd ZdZdd Zdd ZdS )SettingsReferencez
    String subclass which references a current settings value. It's treated as
    the value in memory but serializes to a settings.NAME attribute reference.
    c             C   s   t j| |S )N)str__new__)selfvaluesetting_name r   R/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/conf/__init__.pyr
   )   s    zSettingsReference.__new__c             C   s
   || _ d S )N)r   )r   r   r   r   r   r   __init__,   s    zSettingsReference.__init__N)__name__
__module____qualname____doc__r
   r   r   r   r   r   r   $   s   r   c                   sv   e Zd ZdZdddZdd Zdd Z fd	d
Z fddZe	fddZ
edd Zedd Zedd Z  ZS )LazySettingsz
    A lazy proxy for either global Django settings or a custom settings object.
    The user can manually configure settings prior to using them. Otherwise,
    Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
    Nc             C   s>   t jjt}|s0|rd| nd}td|tf t|| _dS )z
        Load the settings module pointed to by the environment variable. This
        is used the first time settings are needed, if the user hasn't
        configured settings manually.
        z
setting %ssettingszRequested %s, but settings are not configured. You must either define the environment variable %s or call settings.configure() before accessing settings.N)osenvirongetENVIRONMENT_VARIABLEr   Settings_wrapped)r   namesettings_moduledescr   r   r   _setup6   s    zLazySettings._setupc             C   s   | j tkrdS dd| j ji S )Nz<LazySettings [Unevaluated]>z$<LazySettings "%(settings_module)s">r   )r   r   SETTINGS_MODULE)r   r   r   r   __repr__G   s    
zLazySettings.__repr__c             C   s`   | j tkr| j| t| j |}|dkr<|dk	r<| j|}n|dkrR| rRtd|| j|< |S )z<Return the value of a setting and cache it in self.__dict__.	MEDIA_URL
STATIC_URLNZ
SECRET_KEYz)The SECRET_KEY setting must not be empty.>   r#   r$   )r   r   r    getattr_add_script_prefixr   __dict__)r   r   valr   r   r   __getattr__O   s    


zLazySettings.__getattr__c                s4   |dkr| j j  n| j j|d t j|| dS )z
        Set the value of setting. Clear all cached values if _wrapped changes
        (@override_settings does this) or clear single values when set.
        r   N)r'   clearpopsuper__setattr__)r   r   r   )	__class__r   r   r-   _   s    zLazySettings.__setattr__c                s   t  j| | jj|d dS )z3Delete a setting and clear it from cache if needed.N)r,   __delattr__r'   r+   )r   r   )r.   r   r   r/   j   s    zLazySettings.__delattr__c             K   sZ   | j tk	rtdt|}x4|j D ](\}}|j s@td| t||| q$W || _ dS )z
        Called to manually configure the settings. The 'default_settings'
        parameter sets where to retrieve any unspecified values from (its
        argument must support attribute access (__getattr__)).
        zSettings already configured.zSetting %r must be uppercase.N)r   r   RuntimeErrorUserSettingsHolderitemsisupper	TypeErrorsetattr)r   default_settingsoptionsZholderr   r   r   r   r   	configureo   s    
zLazySettings.configurec             C   s(   | j dr| S ddlm} d| | f S )z
        Add SCRIPT_NAME prefix to relative paths.

        Useful when the app is being served at a subpath and manually prefixing
        subpath to STATIC_URL and MEDIA_URL in settings is inconvenient.
        http://https:///r   )get_script_prefixz%s%s)r9   r:   r;   )
startswithZdjango.urlsr<   )r   r<   r   r   r   r&   ~   s    	
zLazySettings._add_script_prefixc             C   s
   | j tk	S )z9Return True if the settings have already been configured.)r   r   )r   r   r   r   
configured   s    zLazySettings.configuredc             C   sF   t j }|d \}}}}|jtjjtjs<tj	t
tdd | jdS )N   )
stacklevelPASSWORD_RESET_TIMEOUT_DAYS)	tracebackextract_stackr=   r   pathdirnamedjango__file__warningswarn*PASSWORD_RESET_TIMEOUT_DAYS_DEPRECATED_MSGr   r)   )r   stackfilename_r   r   r   rA      s    z(LazySettings.PASSWORD_RESET_TIMEOUT_DAYS)N)r   r   r   r   r    r"   r)   r-   r/   r   r8   staticmethodr&   propertyr>   rA   __classcell__r   r   )r.   r   r   0   s   
r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )r   c             C   sn  x*t tD ]}|j r
t| |tt| q
W || _tj| j}d}t | _	x^t |D ]R}|j rTt||}||krt
|ttf rtd| t| || | j	j| qTW | jdr| jdrtdt| d| jd d d	  tjtt | jd
rtjtt ttdrj| jrjtd}|j| jjd }|j rV|j  rVtd| j | jtjd< tj   d S )NINSTALLED_APPSTEMPLATE_DIRSLOCALE_PATHSz*The %s setting must be a list or a tuple. rA   PASSWORD_RESET_TIMEOUTzJPASSWORD_RESET_TIMEOUT_DAYS/PASSWORD_RESET_TIMEOUT are mutually exclusive.<      DEFAULT_HASHING_ALGORITHMtzsetz/usr/share/zoneinfor;   zIncorrect timezone setting: %sZTZ)rR   rS   rT   )!dirr   r3   r5   r%   r!   	importlibimport_moduleset_explicit_settings
isinstancelisttupler   addis_overriddenrA   rI   rJ   rK   r   (DEFAULT_HASHING_ALGORITHM_DEPRECATED_MSGhasattrtimeZ	TIME_ZONEr   joinpathsplitexists
ValueErrorr   r   rY   )r   r   settingmodZtuple_settingsZsetting_valueZzoneinfo_rootZzone_info_filer   r   r   r      s@      


zSettings.__init__c             C   s
   || j kS )N)r^   )r   rk   r   r   r   rc      s    zSettings.is_overriddenc             C   s   d| j j| jd S )Nz<%(cls)s "%(settings_module)s">)clsr   )r.   r   r!   )r   r   r   r   r"      s    zSettings.__repr__N)r   r   r   r   rc   r"   r   r   r   r   r      s   3r   c                   sX   e Zd ZdZdZdd Zdd Z fddZ fd	d
Zdd Z	dd Z
dd Z  ZS )r1   z$Holder for user configured settings.Nc             C   s   t  | jd< || _dS )z
        Requests for configuration variables not in this class are satisfied
        from the module specified in default_settings (if possible).
        _deletedN)r]   r'   r6   )r   r6   r   r   r   r      s    zUserSettingsHolder.__init__c             C   s$   |j   s|| jkrtt| j|S )N)r3   rn   AttributeErrorr%   r6   )r   r   r   r   r   r)      s    zUserSettingsHolder.__getattr__c                s^   | j j| |dkr8t| d|d d d  tjtt |dkrLtjtt t j	|| d S )NrA   rU   rV   rW   rX   )
rn   discardr5   rI   rJ   rK   r   rd   r,   r-   )r   r   r   )r.   r   r   r-      s    zUserSettingsHolder.__setattr__c                s&   | j j| t| |r"t j| d S )N)rn   rb   re   r,   r/   )r   r   )r.   r   r   r/      s    
zUserSettingsHolder.__delattr__c                s"   t  fdd jt jD S )Nc             3   s   | ]}| j kr|V  qd S )N)rn   ).0s)r   r   r   	<genexpr>  s    z-UserSettingsHolder.__dir__.<locals>.<genexpr>)sortedr'   rZ   r6   )r   r   )r   r   __dir__   s    zUserSettingsHolder.__dir__c             C   s6   || j k}|| jk}t| jddd |}|p4|p4|S )Nrc   c             S   s   dS )NFr   )rr   r   r   r   <lambda>  s    z2UserSettingsHolder.is_overridden.<locals>.<lambda>)rn   r'   r%   r6   )r   rk   ZdeletedZset_locallyZset_on_defaultr   r   r   rc     s    

z UserSettingsHolder.is_overriddenc             C   s   dd| j ji S )Nz	<%(cls)s>rm   )r.   r   )r   r   r   r   r"     s    zUserSettingsHolder.__repr__)r   r   r   r   r!   r   r)   r-   r/   ru   rc   r"   rQ   r   r   )r.   r   r1      s   	r1   )r   r[   r   rf   rC   rI   pathlibr   rG   Zdjango.confr   Zdjango.core.exceptionsr   Zdjango.utils.deprecationr   Zdjango.utils.functionalr   r   r   rK   rd   r	   r   r   r   r1   r   r   r   r   r   <module>   s&   p>3