o
    <g                     @   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   Z/var/www/html/venv/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                 K   sv  | j sd S z|dd}W n
 ty   Y d S w t||s d S t| f||||d| | j}z||} |dd}W n
 tyG   Y d S w t| 	 }	|j
|j|	ddi}
t|j
|jt|
 dd	d
}g }|	D ],}|
| }t|jD ] \}}|j|f|vr| }||j_||_||_||_|| q}qr|j
|| |dkr|D ]
}td|  qd S d S )Nauth
Permission)	verbosityinteractiveusingr   contenttypesContentTypefor_concrete_modelsF)content_type__incontent_typecodenamer   zAdding permission '%s')models_module	get_modelLookupErrorr   allow_migrate_modelr   labelget_app_configlist
get_modelsobjects
db_managerget_for_modelssetr   filtervaluesvalues_listr   _metapk_statedbr   namer   r   bulk_createprint)
app_configr   r   r   r   kwargsr   	app_labelr   modelsctypes	all_permsr   modelctyper   r2   
permissionpermr   r   r   create_permissions&   st   	



	r?   c               
   C   s*   zt  } W | S  t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OSError)resultr   r   r   get_system_usernameo   s   
rG   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   )r8   r@   NFKDasciiignore username)rL   )django.contrib.authr8   Userr.   swappedrG   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?   rG   ra   r   r   r   r   <module>   s"    
I