o
    Lfm3                     @   s8   d dl Z d dlmZ G dd deZedZdd ZdS )    NImproperlyConfiguredc                   @   s`  e Zd ZG dd dZG dd dZdd Zdd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zed5d6 Zed7d8 Zed9d: Z ed;d< Z!ed=d> Z"ed?d@ Z#edAdB Z$edCdD Z%edEdF Z&edGdH Z'edIdJ Z(edKdL Z)edMdN Z*edOdP Z+edQdR Z,edSdT Z-edUdV Z.edWdX Z/edYdZ Z0ed[d\ Z1ed]d^ Z2ed_d` Z3edadb Z4edcdd Z5deS )fAppSettingsc                   @      e Zd ZdZdZdZdS )z AppSettings.AuthenticationMethodusernameemailusername_emailN)__name__
__module____qualname__USERNAMEEMAILUSERNAME_EMAIL r   r   ]/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/account/app_settings.pyAuthenticationMethod   s    r   c                   @   r   )z#AppSettings.EmailVerificationMethod	mandatoryoptionalnoneN)r	   r
   r   	MANDATORYOPTIONALNONEr   r   r   r   EmailVerificationMethod   s    r   c                 C   s   ddl m} || _| j| jjkr| jsJ | j| jjks!| js!J | j	| j
jks-| js-J | jsB| jr5J | j| jj| jjfvsBJ | jd urN| jdksNJ | jr_| jd ur_| jdkr_tdt|dsit|drntd t|drztd	 d S d S )
Nr   settings   zKInvalid combination of ACCOUNT_CHANGE_EMAIL and ACCOUNT_MAX_EMAIL_ADDRESSESACCOUNT_LOGIN_ATTEMPTS_LIMITACCOUNT_LOGIN_ATTEMPTS_TIMEOUTznsettings.ACCOUNT_LOGIN_ATTEMPTS_LIMIT/TIMEOUT is deprecated, use: settings.ACCOUNT_RATE_LIMITS['login_failed']#ACCOUNT_EMAIL_CONFIRMATION_COOLDOWNznsettings.ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN is deprecated, use: settings.ACCOUNT_RATE_LIMITS['confirm_email'])django.confr   prefixAUTHENTICATION_METHODr   r   EMAIL_REQUIREDr   UNIQUE_EMAILEMAIL_VERIFICATIONr   r   USER_MODEL_USERNAME_FIELDUSERNAME_REQUIREDr   MAX_EMAIL_ADDRESSESCHANGE_EMAILr   hasattrwarningswarn)selfr    r   r   r   r   __init__   sF   



zAppSettings.__init__c                 C   s   ddl m} || j| |S )Nr   )get_setting)allauth.utilsr.   r    )r,   namedfltr.   r   r   r   _setting>   s   zAppSettings._settingc                 C      |  ddS )NPREVENT_ENUMERATIONTr2   r,   r   r   r   r4   C      zAppSettings.PREVENT_ENUMERATIONc                 C   s   |  dd S )NDEFAULT_HTTP_PROTOCOLhttp)r2   lowerr6   r   r   r   r8   G   s   z!AppSettings.DEFAULT_HTTP_PROTOCOLc                 C   s    ddl m} | dt|ddS )z`
        Determines the expiration date of email confirmation mails (#
        of days)
        r   r   EMAIL_CONFIRMATION_EXPIRE_DAYSEMAIL_CONFIRMATION_DAYS   )r   r   r2   getattrr,   r   r   r   r   r;   K   s
   
z*AppSettings.EMAIL_CONFIRMATION_EXPIRE_DAYSc                 C   r3   )zx
        The URL to redirect to after a successful email confirmation, in
        case of an authenticated user
        -EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLNr5   r6   r   r   r   r@   X      z9AppSettings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLc                 C      ddl m} | d|jS )zt
        The URL to redirect to after a successful email confirmation, in
        case no user is logged in
        r   r   )EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL)r   r   r2   	LOGIN_URLr?   r   r   r   rC   `   s   z5AppSettings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URLc                 C   r3   )zT
        The user is required to hand over an email address when signing up
        r"   Fr5   r6   r   r   r   r"   l      zAppSettings.EMAIL_REQUIREDc                 C   s8   |  d| jj}|du r| jj}|S |du r| jj}|S )z/
        See email verification method
        r$   TF)r2   r   r   r   r,   retr   r   r   r$   s   s   zAppSettings.EMAIL_VERIFICATIONc                 C   s   |  dd S )Nr'   r5   r6   r   r   r   r'      r7   zAppSettings.MAX_EMAIL_ADDRESSESc                 C   r3   )Nr(   Fr5   r6   r   r   r   r(      r7   zAppSettings.CHANGE_EMAILc                 C   s   |  d| jj}|S )Nr!   )r2   r   r   rF   r   r   r   r!      s   z!AppSettings.AUTHENTICATION_METHODc                 C   r3   )z6
        Adjust max_length of email addresses
        EMAIL_MAX_LENGTH   r5   r6   r   r   r   rH      rE   zAppSettings.EMAIL_MAX_LENGTHc                 C   r3   )z7
        Enforce uniqueness of email addresses
        r#   Tr5   r6   r   r   r   r#      rE   zAppSettings.UNIQUE_EMAILc                 C   r3   )z+
        Signup email verification
        SIGNUP_EMAIL_ENTER_TWICEFr5   r6   r   r   r   rJ      rE   z$AppSettings.SIGNUP_EMAIL_ENTER_TWICEc                 C   s   |  dd}|  d|S )z.
        Signup password verification
        SIGNUP_PASSWORD_VERIFICATIONTSIGNUP_PASSWORD_ENTER_TWICEr5   )r,   legacyr   r   r   rL      s   z'AppSettings.SIGNUP_PASSWORD_ENTER_TWICEc                 C   rB   )Nr   r   SIGNUP_REDIRECT_URL)r   r   r2   LOGIN_REDIRECT_URLr?   r   r   r   rN      s   zAppSettings.SIGNUP_REDIRECT_URLc                 C   s&   ddl m} d}|js| dd}|S )z)
        Minimum password Length
        r   r   NPASSWORD_MIN_LENGTH   )r   r   AUTH_PASSWORD_VALIDATORSr2   )r,   r   rG   r   r   r   rP      s
   zAppSettings.PASSWORD_MIN_LENGTHc              
   C   s   |  di }|du ri S |  dd}|  dd}d }|r'|r'd| d| d	}|  d
d}d }|r7d| d	}ddddddd||d	}|| |S )NRATE_LIMITSFLOGIN_ATTEMPTS_LIMIT   LOGIN_ATTEMPTS_TIMEOUT,  z10/m/ip,/zs/keyEMAIL_CONFIRMATION_COOLDOWN   z1/z5/m/userz	10/m/userz20/m/ip,5/m/keyz20/m/ipz30/m/ip)	change_passwordmanage_emailreset_passwordreauthenticatereset_password_from_keysignuploginlogin_failedconfirm_email)r2   update)r,   rlsattempts_amountattempts_timeoutlogin_failed_rlcooldownconfirm_email_rlrG   r   r   r   rS      s0   
zAppSettings.RATE_LIMITSc                 C   r3   )zD
        Subject-line prefix to use for email messages sent
        EMAIL_SUBJECT_PREFIXNr5   r6   r   r   r   rk      rE   z AppSettings.EMAIL_SUBJECT_PREFIXc                 C   r3   )z
        Signup form
        SIGNUP_FORM_CLASSNr5   r6   r   r   r   rl      rE   zAppSettings.SIGNUP_FORM_CLASSc                 C   r3   )zJ
        The user is required to enter a username when signing up
        r&   Tr5   r6   r   r   r   r&      rE   zAppSettings.USERNAME_REQUIREDc                 C   r3   )z)
        Minimum username Length
        USERNAME_MIN_LENGTH   r5   r6   r   r   r   rm      rE   zAppSettings.USERNAME_MIN_LENGTHc                 C   s   |  dg S )z8
        List of usernames that are not allowed
        USERNAME_BLACKLISTr5   r6   r   r   r   ro      rE   zAppSettings.USERNAME_BLACKLISTc                 C   r3   )zJ
        render_value parameter as passed to PasswordInput fields
        PASSWORD_INPUT_RENDER_VALUEFr5   r6   r   r   r   rp     rE   z'AppSettings.PASSWORD_INPUT_RENDER_VALUEc                 C   r3   )NADAPTERz-allauth.account.adapter.DefaultAccountAdapterr5   r6   r   r   r   rq     r7   zAppSettings.ADAPTERc                 C   r3   )NCONFIRM_EMAIL_ON_GETFr5   r6   r   r   r   rr     r7   z AppSettings.CONFIRM_EMAIL_ON_GETc                 C   r3   )NAUTHENTICATED_LOGIN_REDIRECTSTr5   r6   r   r   r   rs     r7   z)AppSettings.AUTHENTICATED_LOGIN_REDIRECTSc                 C   r3   )zW
        Automatically log the user in once they confirmed their email address
        LOGIN_ON_EMAIL_CONFIRMATIONFr5   r6   r   r   r   rt     rE   z'AppSettings.LOGIN_ON_EMAIL_CONFIRMATIONc                 C   r3   )zc
        Automatically log the user in immediately after resetting
        their password.
        LOGIN_ON_PASSWORD_RESETFr5   r6   r   r   r   ru     rA   z#AppSettings.LOGIN_ON_PASSWORD_RESETc                 C   s   ddl m} | d|jpdS )Nr   r   LOGOUT_REDIRECT_URLrX   )r   r   r2   rv   r?   r   r   r   rv   &  s   zAppSettings.LOGOUT_REDIRECT_URLc                 C   r3   )NLOGOUT_ON_GETFr5   r6   r   r   r   rw   ,  r7   zAppSettings.LOGOUT_ON_GETc                 C   r3   )NLOGOUT_ON_PASSWORD_CHANGEFr5   r6   r   r   r   rx   0  r7   z%AppSettings.LOGOUT_ON_PASSWORD_CHANGEc                 C   r3   )Nr%   r   r5   r6   r   r   r   r%   4  r7   z%AppSettings.USER_MODEL_USERNAME_FIELDc                 C   r3   )NUSER_MODEL_EMAIL_FIELDr   r5   r6   r   r   r   ry   8  r7   z"AppSettings.USER_MODEL_EMAIL_FIELDc                 C   rB   )zP
        Deprecated -- use Django's settings.SESSION_COOKIE_AGE instead
        r   r   SESSION_COOKIE_AGE)r   r   r2   rz   r?   r   r   r   rz   <  s   zAppSettings.SESSION_COOKIE_AGEc                 C   r3   )z
        Controls the life time of the session. Set to `None` to ask the user
        ("Remember me?"), `False` to not remember, and `True` to always
        remember.
        SESSION_REMEMBERNr5   r6   r   r   r   r{   E  s   zAppSettings.SESSION_REMEMBERc                 C   r3   )zV
        A string defining the template extension to use, defaults to `html`.
        TEMPLATE_EXTENSIONhtmlr5   r6   r   r   r   r|   N  rE   zAppSettings.TEMPLATE_EXTENSIONc                 C   s   |  di S )NFORMSr5   r6   r   r   r   r~   U  r7   zAppSettings.FORMSc                 C   r3   )NEMAIL_CONFIRMATION_HMACTr5   r6   r   r   r   r   Y  r7   z#AppSettings.EMAIL_CONFIRMATION_HMACc                 C   r3   )NSALTaccountr5   r6   r   r   r   r   ]  r7   zAppSettings.SALTc                 C   r3   )NPRESERVE_USERNAME_CASINGTr5   r6   r   r   r   r   a  r7   z$AppSettings.PRESERVE_USERNAME_CASINGc                 C   sz   ddl m} ddlm} ddlm} | dd }|r)||}t|ts'|d|S | j	d ur9| j
| j	j}|S g }|S )Nr   )get_user_modelr   import_attributeUSERNAME_VALIDATORSz4ACCOUNT_USERNAME_VALIDATORS is expected to be a list)django.contrib.authr   django.core.exceptionsr   r/   r   r2   
isinstancelistr%   _meta	get_field
validators)r,   r   r   r   pathrG   r   r   r   r   e  s&   


zAppSettings.USERNAME_VALIDATORSc                 C   s@   ddl m} ddlm} | dd }|d ur||}|S |}|S )Nr   )%EmailAwarePasswordResetTokenGeneratorr   PASSWORD_RESET_TOKEN_GENERATOR)allauth.account.formsr   r/   r   r2   )r,   r   r   token_generator_pathtoken_generatorr   r   r   r   ~  s   z*AppSettings.PASSWORD_RESET_TOKEN_GENERATORc                 C   r3   )NEMAIL_UNKNOWN_ACCOUNTSTr5   r6   r   r   r   r     r7   z"AppSettings.EMAIL_UNKNOWN_ACCOUNTSc                 C   r3   )NREAUTHENTICATION_TIMEOUTrW   r5   r6   r   r   r   r     r7   z$AppSettings.REAUTHENTICATION_TIMEOUTc                 C   r3   )NEMAIL_NOTIFICATIONSFr5   r6   r   r   r   r     r7   zAppSettings.EMAIL_NOTIFICATIONSc                 C   r3   )NREAUTHENTICATION_REQUIREDFr5   r6   r   r   r   r     r7   z%AppSettings.REAUTHENTICATION_REQUIREDN)6r	   r
   r   r   r   r-   r2   propertyr4   r8   r;   r@   rC   r"   r$   r'   r(   r!   rH   r#   rJ   rL   rN   rP   rS   rk   rl   r&   rm   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r%   ry   rz   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    
(
















$



























r   ACCOUNT_c                 C   s
   t t| S )N)r>   _app_settings)r0   r   r   r   __getattr__  s   
r   )r*   r   r   objectr   r   r   r   r   r   r   <module>   s       