o
    þÞhw&  ã                   @   s|   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
„ Zddd„Zddd„Zdd„ ZdS )é    )Úchain)Ú
MethodType)Úapps)Úsettings)Úchecks)Úimport_stringé   )Ú_get_builtin_permissionsc              
   C   sT   t | ƒ}t|ƒD ]\}}zt |ƒ}t||ƒr|W   S W q ttfy'   Y qw dS )z�
    Return the index of dotted class path (or a subclass of that class) in a
    list of candidate paths. If it does not exist, return -1.
    éÿÿÿÿ)r   Ú	enumerateÚ
issubclassÚImportErrorÚ	TypeError)Ú
class_pathÚcandidate_pathsÚclsÚindexÚpathÚcandidate_cls© r   úZ/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/contrib/auth/checks.pyÚ_subclass_index   s   

ÿÿr   Nc                    s|  | d u rt  tj¡‰ ntj d¡\}}| D ]}|j|kr#| |¡‰  nqg S g }tˆ jtt	fƒs;| 
tjdˆ dd�¡ ˆ jˆ jv rS| 
tjddˆ jˆ jf ˆ dd�¡ ˆ j ˆ j¡js”t‡ fd	d
„ˆ jjD ƒƒs”tjdgkr�| 
tjdˆ jjˆ jf ˆ dd�¡ n| 
tjdˆ jjˆ jf dˆ dd�¡ tˆ ƒ jtƒr¨| 
tjdˆ  ˆ dd�¡ tˆ ƒ jtƒr¼| 
tjdˆ  ˆ dd�¡ |S )NÚ.z*'REQUIRED_FIELDS' must be a list or tuple.z	auth.E001©ÚobjÚidzjThe field named as the 'USERNAME_FIELD' for a custom user model must not be included in 'REQUIRED_FIELDS'.zaThe 'USERNAME_FIELD' is currently set to '%s', you should remove '%s' from the 'REQUIRED_FIELDS'.z	auth.E002)Úhintr   r   c                 3   s   � | ]
}|j ˆ jfkV  qd S ©N)ÚfieldsÚUSERNAME_FIELD)Ú.0Ú
constraint©r   r   r   Ú	<genexpr>H   s
   € ÿ
ÿz#check_user_model.<locals>.<genexpr>z)django.contrib.auth.backends.ModelBackendzC'%s.%s' must be unique because it is named as the 'USERNAME_FIELD'.z	auth.E003z?'%s.%s' is named as the 'USERNAME_FIELD', but it is not unique.zKEnsure that your authentication backend(s) can handle non-unique usernames.z	auth.W004z�%s.is_anonymous must be an attribute or property rather than a method. Ignoring this is a security issue as anonymous users will be treated as authenticated!z	auth.C009z¡%s.is_authenticated must be an attribute or property rather than a method. Ignoring this is a security issue as anonymous users will be treated as authenticated!z	auth.C010)r   Ú	get_modelr   ÚAUTH_USER_MODELÚsplitÚlabelÚ
isinstanceÚREQUIRED_FIELDSÚlistÚtupleÚappendr   ÚErrorr   Ú_metaÚ	get_fieldÚuniqueÚanyÚtotal_unique_constraintsÚAUTHENTICATION_BACKENDSÚobject_nameÚWarningÚis_anonymousr   ÚCriticalÚis_authenticated)Úapp_configsÚkwargsÚ	app_labelÚ
model_nameÚ
app_configÚerrorsr   r"   r   Úcheck_user_model   s–   

þýÿ	
þ÷ÿþÿÿüÿ	ÿøÿþûÿ	þûÿ	r?   c              	   K   sô  | d u r	t  ¡ }n
t dd„ | D ƒ¡}t  dd¡}|j d¡j}|j d¡j}g }|D ]Ì}|j}tt	|ƒƒ}	|	rCt
dd„ |	 ¡ D ƒƒnd}
|
|krc||
t|jƒ  }| tjd	|j||f |d
d�¡ |	rpt
dd„ |	 ¡ D ƒƒnd}||kr�||t|jƒ  }| tjd|j||f |dd�¡ tƒ }|jD ]`\}}t|ƒ|kr±| tjd||j|f |dd�¡ t|ƒ|krÈ| tjd||j|f |dd�¡ ||	v rÝ| tjd||jf |dd�¡ n||v rñ| tjd||jf |dd�¡ | |¡ q–q+|S )Nc                 s   s   � | ]}|  ¡ V  qd S r   )Ú
get_models)r    r=   r   r   r   r#   €   s   € 
ÿz+check_models_permissions.<locals>.<genexpr>ÚauthÚ
PermissionÚnameÚcodenamec                 s   ó   � | ]}t |ƒV  qd S r   ©Úlen)r    rC   r   r   r   r#   Ž   ó   € r   zzThe verbose_name of model '%s' must be at most %d characters for its builtin permission names to be at most %d characters.z	auth.E007r   c                 s   rE   r   rF   )r    rD   r   r   r   r#   ¢   rH   zvThe name of model '%s' must be at most %d characters for its builtin permission codenames to be at most %d characters.z	auth.E011zEThe permission named '%s' of model '%s' is longer than %d characters.z	auth.E008zIThe permission codenamed '%s' of model '%s' is longer than %d characters.z	auth.E012zOThe permission codenamed '%s' clashes with a builtin permission for model '%s'.z	auth.E005z;The permission codenamed '%s' is duplicated for model '%s'.z	auth.E006)r   r@   r   Úfrom_iterabler$   r.   r/   Ú
max_lengthÚdictr	   ÚmaxÚvaluesrG   Úverbose_name_rawr,   r   r-   r'   Úkeysr<   ÚsetÚpermissionsÚadd)r9   r:   ÚmodelsrB   Úpermission_name_max_lengthÚpermission_codename_max_lengthr>   ÚmodelÚoptsÚbuiltin_permissionsÚ"max_builtin_permission_name_lengthÚverbose_name_max_lengthÚ&max_builtin_permission_codename_lengthÚmodel_name_max_lengthÚ	codenamesrD   rC   r   r   r   Úcheck_models_permissions|   sÈ   

ÿÿýÿ
ýúÿÿýÿýýöÿýþ÷ÿýþ÷ÿÿüÿÿüÿÎ4r^   c                 K   sL   g }t dtjƒ}|dkr$t dtjƒ}|dks||kr$| tjddd�¡ |S )Nz6django.contrib.auth.middleware.LoginRequiredMiddlewarer
   z7django.contrib.auth.middleware.AuthenticationMiddlewarez¨In order to use django.contrib.auth.middleware.LoginRequiredMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware must be defined before it in MIDDLEWARE.z	auth.E013)r   )r   r   Ú
MIDDLEWAREr,   r   r-   )r9   r:   r>   Úlogin_required_indexÚ
auth_indexr   r   r   Úcheck_middlewareð   s$   þþüÿrb   r   )Ú	itertoolsr   Útypesr   Údjango.appsr   Údjango.confr   Údjango.corer   Údjango.utils.module_loadingr   Ú
managementr	   r   r?   r^   rb   r   r   r   r   Ú<module>   s    

`t