o
    —¨ÊhÏ  ã                   @   s�   d Z ddl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 ddlmZmZ dd	„ Zd
d„ Zddeefdd„Zdd„ Zdefdd„ZdS )zC
Creates permissions for all installed apps that need permissions.
é    N)Úapps)Úget_permission_codename)Úcreate_contenttypes)Ú
exceptions)ÚDEFAULT_DB_ALIASÚrouterc                 C   s   g t | ƒ¢| j¢S )zH
    Return (codename, name) for all permissions in the given opts.
    )Ú_get_builtin_permissionsÚpermissions)Úopts© r   úY/var/www/html/env/lib/python3.10/site-packages/django/contrib/auth/management/__init__.pyÚ_get_all_permissions   s   r   c                 C   s2   g }| j D ]}| t|| ƒd|| jf f¡ q|S )z€
    Return (codename, name) for all autogenerated permissions.
    By default, this is ('add', 'change', 'delete', 'view')
    z	Can %s %s)Údefault_permissionsÚappendr   Úverbose_name_raw)r
   ÚpermsÚactionr   r   r   r      s   
þÿr   é   Tc                    s8  | j sd S t| f||||dœ|¤Ž | j}z| |¡} | dd¡}| dd¡‰ W n
 ty2   Y d S w t |ˆ ¡s;d S g }tƒ }	|  	¡ D ]!}
|j
 |¡j|
dd�}|	 |¡ t|
jƒD ]	}| ||f¡ q[qDtˆ j
 |¡j|	d� d	d
¡ƒ‰‡ ‡fdd„|D ƒ}ˆ j
 |¡ |¡ |dkr˜|D ]
}td| ƒ q�d S d S )N)Ú	verbosityÚinteractiveÚusingr   ÚcontenttypesÚContentTypeÚauthÚ
PermissionF)Úfor_concrete_model)Úcontent_type__inÚcontent_typeÚcodenamec                    s0   g | ]\}\}}|j |fˆvrˆ |||d �‘qS ))r   Únamer   )Úpk)Ú.0Úctr   r   ©r   Ú	all_permsr   r   Ú
<listcomp>b   s
    
þz&create_permissions.<locals>.<listcomp>r   zAdding permission '%s')Úmodels_moduler   ÚlabelÚget_app_configÚ	get_modelÚLookupErrorr   Úallow_migrate_modelÚsetÚ
get_modelsÚobjectsÚ
db_managerÚget_for_modelÚaddr   Ú_metar   r   ÚfilterÚvalues_listÚbulk_createÚprint)Ú
app_configr   r   r   r   ÚkwargsÚ	app_labelr   Úsearched_permsÚctypesÚklassÚctypeÚpermr   r   r#   r   Úcreate_permissions%   s`   ÿûú	
ÿÿ
ÿ
þûþþr?   c               	   C   s(   zt  ¡ } W | S  ttfy   Y dS w )zt
    Return the current system user's username, or an empty string if the
    username could not be determined.
    Ú )ÚgetpassÚgetuserÚImportErrorÚKeyError)Úresultr   r   r   Úget_system_usernamem   s   
ûürF   c                 C   sÒ   ddl m} |jjjrdS tƒ }zt d|¡ dd¡ 	d¡ 
dd¡ ¡ }W n
 ty/   Y dS w z|jj d¡ |¡ W n tjyG   Y dS w | rg|rgz|jj |¡j|d	� W dS  |jjyf   Y |S w |S )
a¶  
    Try to determine the current system user's username to use as a default.

    :param check_db: If ``True``, requires that the username does not match an
        existing ``auth.User`` (otherwise returns an empty string).
    :param database: The database where the unique check will be performed.
    :returns: The username, or an empty string if no username can be
        determined or the suggested username is already taken.
    r   )Úmodelsr@   ÚNFKDÚasciiÚignoreú Úusername)rL   )Údjango.contrib.authrG   ÚUserr2   ÚswappedrF   ÚunicodedataÚ	normalizeÚencodeÚdecodeÚreplaceÚlowerÚUnicodeDecodeErrorÚ	get_fieldÚrun_validatorsr   ÚValidationErrorÚ_default_managerr/   ÚgetÚDoesNotExist)Úcheck_dbÚdatabaseÚauth_appÚdefault_usernamer   r   r   Úget_default_username|   s<   

ûÿÿÿýüra   )Ú__doc__rA   rP   Údjango.appsr   Úglobal_appsrM   r   Ú&django.contrib.contenttypes.managementr   Údjango.corer   Ú	django.dbr   r   r   r   r?   rF   ra   r   r   r   r   Ú<module>   s"    
ûH