B
    ¤0H[ù  ã               @   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mZ dd„ Zd	d
„ Zddeefdd„Zdd„ Zddd„ZdS )zC
Creates permissions for all installed apps that need permissions.
é    N)Úapps)Úget_permission_codename)Ú
exceptions)ÚDEFAULT_DB_ALIASÚrouterc             C   s   t | ƒ}t| jƒ}|| S )zH
    Return (codename, name) for all permissions in the given opts.
    )Ú_get_builtin_permissionsÚlistÚpermissions)ÚoptsÚbuiltinZcustom© r   úkC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\auth\management\__init__.pyÚ_get_all_permissions   s    
r   c             C   s6   g }x,| j D ]"}| t|| ƒd|| jf f¡ qW |S )zx
    Return (codename, name) for all autogenerated permissions.
    By default, this is ('add', 'change', 'delete')
    z	Can %s %s)Zdefault_permissionsÚappendr   Zverbose_name_raw)r
   ÚpermsÚactionr   r   r   r      s    r   é   Tc                s&  | j s
d S | j}y&| |¡} | dd¡}| dd¡‰ W n tk
rJ   d S X t |ˆ ¡s\d S g }tƒ }	xN|  ¡ D ]B}
|j	 
|¡ |
¡}|	 |¡ x t|
jƒD ]}| ||f¡ qœW qpW tˆ j	 |¡j|	d� dd¡ƒ‰‡ ‡fdd	„|D ƒ}ˆ j	 |¡ |¡ |d
k�r"x|D ]}td| ƒ �qW d S )NZcontenttypesÚContentTypeÚauthÚ
Permission)Zcontent_type__inÚcontent_typeÚcodenamec                s0   g | ](\}\}}|j |fˆkrˆ |||d �‘qS ))r   Únamer   )Úpk)Ú.0Úctr   r   )r   Ú	all_permsr   r   ú
<listcomp>K   s   
z&create_permissions.<locals>.<listcomp>r   zAdding permission '%s')Zmodels_moduleÚlabelZget_app_configZ	get_modelÚLookupErrorr   Zallow_migrate_modelÚsetZ
get_modelsÚobjectsZ
db_managerZget_for_modelÚaddr   Ú_metar   ÚusingÚfilterZvalues_listZbulk_createÚprint)Z
app_configÚ	verbosityÚinteractiver$   r   ÚkwargsZ	app_labelr   Zsearched_permsÚctypesÚklassÚctypeZpermr   r   )r   r   r   Úcreate_permissions$   s6    




r-   c           	   C   s*   yt  ¡ } W n ttfk
r$   dS X | S )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_usernameU   s
    r4   c             C   sÎ   ddl m} |jjjrdS tƒ }y*t d|¡ dd¡ 	d¡ 
dd¡ ¡ }W n tk
r^   dS X y|jj d¡ |¡ W n tjk
rŽ   dS X | rÊ|rÊy|jjj|d	� W n |jjk
rÄ   Y nX dS |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).
    :returns: The username, or an empty string if no username can be
        determined.
    r   )Úmodelsr.   ZNFKDÚasciiÚignoreú Úusername)r9   )Údjango.contrib.authr5   ZUserr#   Zswappedr4   ÚunicodedataÚ	normalizeÚencodeÚdecodeÚreplaceÚlowerÚUnicodeDecodeErrorÚ	get_fieldZrun_validatorsr   ZValidationErrorZ_default_managerÚgetZDoesNotExist)Zcheck_dbZauth_appZdefault_usernamer   r   r   Úget_default_usernamed   s*    

rD   )T)Ú__doc__r/   r;   Zdjango.appsr   Zglobal_appsr:   r   Zdjango.corer   Z	django.dbr   r   r   r   r-   r4   rD   r   r   r   r   Ú<module>   s   	1