a
    ܌xd                     @   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                    sD   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)superadd_argumentsadd_argument)selfparser	__class__ p/var/www/html/Ranjet/env/lib/python3.9/site-packages/django_extensions/management/commands/update_permissions.pyr      s    zCommand.add_argumentsc                 O   sH  |d r&|d  d}dd |D }nt }|d r@d\}}n|d rRd\}}nd	\}}|D ]}td
k rddlm} |||d d |rt||d  |r^| D ]}	tj	
|	}
t|	jD ]\}}ztj	j||
d}W n tjy   Y qY n0 |j|krt|}||_|d dkr6| j| jd||f  |  qqq^d S )Nr   ,c                 S   s   g | ]}t |qS r   )django_appsZget_app_config).0xr   r   r   
<listcomp>       z"Command.handle.<locals>.<listcomp>Zcreate_only)TFZupdate_only)FT)TT)   r   r   )create_contenttypes	verbosity)r!   )codenamecontent_typer   zUpdate permission '%s' to '%s')splitr   Zget_app_configsDJANGO_VERSIONZ&django.contrib.contenttypes.managementr    r   Z
get_modelsr   objectsZget_for_modelr   _metar   getZDoesNotExistnamestrstdoutwritestyleSUCCESSsave)r   argsoptionsZ	app_namesr   Z	do_createZ	do_updateZappr    modelr#   r"   r)   Z
permissionZold_strr   r   r   handle   s:    



zCommand.handle)__name__
__module____qualname__r   r   r	   r3   __classcell__r   r   r   r   r
      s   r
   N)djangor   r%   Zdjango.appsr   r   Zdjango.contrib.auth.managementr   r   Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr   Zdjango.core.management.baser   Z"django_extensions.management.utilsr	   r
   r   r   r   r   <module>   s   