o
    uvXjæ  ã                   @   sl   d dl mZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ G dd	„ d	eƒZd
S )é    )ÚVERSION)Úapps)Úcreate_permissionsÚ_get_all_permissions)Ú
Permission)ÚContentType)ÚBaseCommand)Úsignalcommandc                       s,   e Zd ZdZ‡ fdd„Zedd„ ƒZ‡  ZS )ÚCommandzLreloads permissions for specified apps, or all apps if no args are specifiedc                    sH   t t| ƒ |¡ |jdddd� |jddddd	� |jd
dddd	� d S )Nz--appsr   z2Reload permissions only for apps (comma separated))ÚdestÚhelpz--create-onlyÚ
store_trueFzOnly create missing permissions)ÚactionÚdefaultr   z--update-onlyzOnly update permissions)Úsuperr
   Úadd_argumentsÚadd_argument)ÚselfÚparser©Ú	__class__© úu/var/www/html/myproject/venv/lib/python3.10/site-packages/django_extensions/management/commands/update_permissions.pyr      s   zCommand.add_argumentsc                 O   sB  |d r|d   d¡}dd„ |D ƒ}nt ¡ }|d r d\}}n|d r)d\}}nd	\}}|D ]o}td
k rCddlm} |||d d� |rLt||d ƒ |rž| ¡ D ]K}	tj	 
|	¡}
t|	jƒD ]=\}}z
tj	j||
d�}W n
 tjyw   Y q_w |j|krœt|ƒ}||_|d dkr˜| j | j d||f ¡¡ | ¡  q_qRq/d S )Nr   ú,c                 S   s   g | ]}t  |¡‘qS r   )Údjango_appsÚget_app_config)Ú.0Úxr   r   r   Ú
<listcomp>   s    z"Command.handle.<locals>.<listcomp>Úcreate_only)TFÚupdate_only)FT)TT)é   r!   r   )Úcreate_contenttypesÚ	verbosity)r#   )ÚcodenameÚcontent_typer!   zUpdate permission '%s' to '%s')Úsplitr   Úget_app_configsÚDJANGO_VERSIONÚ&django.contrib.contenttypes.managementr"   r   Ú
get_modelsr   ÚobjectsÚget_for_modelr   Ú_metar   ÚgetÚDoesNotExistÚnameÚstrÚstdoutÚwriteÚstyleÚSUCCESSÚsave)r   ÚargsÚoptionsÚ	app_namesr   Ú	do_createÚ	do_updateÚappr"   Úmodelr%   r$   r0   Ú
permissionÚold_strr   r   r   Úhandle   sD   

ÿ
€ö€ïzCommand.handle)Ú__name__Ú
__module__Ú__qualname__r   r   r	   r@   Ú__classcell__r   r   r   r   r
      s
    r
   N)Údjangor   r(   Údjango.appsr   r   Údjango.contrib.auth.managementr   r   Údjango.contrib.auth.modelsr   Ú"django.contrib.contenttypes.modelsr   Údjango.core.management.baser   Ú"django_extensions.management.utilsr	   r
   r   r   r   r   Ú<module>   s   