
    df,                     r    d dl Z d dlmZ d dlmZmZmZ d dlmZ dZ	ddZ
d Z G d	 d
ej                  ZdS )    N)color_style)IntegrityError
migrationstransaction)Qz
    A problem arose migrating proxy model permissions for {old} to {new}.

      Permission(s) for {new} already existed.
      Codenames Q: {query}

    Ensure to audit ALL permissions for {old} and {new}.
Fc                 2   t                      }|                     dd          }|                     dd          }|j        j        }|                                 D ]}|j        j        sfdj        D             }t          |          }	j	        D ]\  }
}|	t          |
|          z  }	|j
                            |          }|                    |d	          }|                    |d
	          }|r|n|}|r|n|}	 t          j        |          5  |j
                            |                              |	|                              |           ddd           n# 1 swxY w Y   # t$          $ r d                    |j        |j                  }d                    |j        |j                  }t,          j                            |                    t2                              |||	                               Y w xY wdS )zk
    Update the content_type of proxy model permissions to use the ContentType
    of the proxy model.
    auth
PermissioncontenttypesContentTypec                 (    g | ]}|d j         S )_)
model_name).0actionoptss     xD:\Python Project\djangoTemplates\venv\Lib\site-packages\django/contrib/auth/migrations/0011_update_proxy_permissions.py
<listcomp>z2update_proxy_model_permissions.<locals>.<listcomp>   s3     /
 /
 /
4:vvvt//
 /
 /
    )codename__in)codenamenameT)for_concrete_modelF)using)content_typeNz{}_{})oldnewquery)r   	get_model
connectionalias
get_models_metaproxydefault_permissionsr   permissionsobjects
db_managerget_for_modelr   atomicr   filterupdater   format	app_labelmodelsysstdoutwriteWARNING)appsschema_editorreversestyler
   r   r!   Model#proxy_default_permissions_codenamespermissions_queryr   r   content_type_managerconcrete_content_typeproxy_content_typeold_content_typenew_content_typer   r   r   s                      @r   update_proxy_model_permissionsr@      s   
 MME55J..??K$*E""  {z 	/
 /
 /
 /
>B>V/
 /
 /
+ +NOOO". 	A 	ANHdH4!@!@!@@*2==eDD 4 B Bd !C !
 !
 2??e @ 
 
 29S-->S4;S00AS	#%000 8 8"((//66%!1 7   &&6&777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
  	 	 	..!1!;=M=STTC..!1!;=M=STTCJgnn#EVnWWXX    	3 s8   E9AE, E9,E0	0E93E0	4E99BHHc                 *    t          | |d           dS )zn
    Update the content_type of proxy model permissions to use the ContentType
    of the concrete model.
    T)r6   N)r@   )r4   r5   s     r   revert_proxy_model_permissionsrB   ;   s    
 #4EEEEEEr   c                   :    e Zd ZddgZ ej        ee          gZdS )	Migration)r	    0010_alter_group_name_max_length)r   0002_remove_content_type_nameN)	__name__
__module____qualname__dependenciesr   	RunPythonr@   rB   
operations r   r   rD   rD   C   s<        49L
 	
*,J	
 	
JJJr   rD   )F)r0   django.core.management.colorr   	django.dbr   r   r   django.db.modelsr   r3   r@   rB   rD   rM   r   r   <module>rQ      s    



 4 4 4 4 4 4 = = = = = = = = = =      ' ' ' 'TF F F	 	 	 	 	
$ 	 	 	 	 	r   