
    Bhv                        U 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mZ d dlmZ d d	lmZmZmZmZ d d
lmZ d dlmZ d dlmZmZmZmZ  e       Z eZ!e"e   e#d<   ejH                  jK                         D ]  \  Z&Z'e&e k(  se'jP                  Z!  G d d      Z) G d de)e!      Z* G d de)ej
                        Z+ ed      r9ej                  jY                  ee*       ej                  jY                  ee+       yy)    )deepcopy)admin)
ModelAdminsite)get_user_model)Site)gettext)PageUserChangeFormPageUserGroupForm)NoPermissionsException)PagePagePermissionPageUserPageUserGroup)	UserAdmin)get_cms_setting)get_model_permission_codenameget_subordinate_groupsget_subordinate_usersget_user_permission_leveladmin_classc                   `     e Zd Zd Zd Zd	 fd	Z fdZ fdZd	 fd	Zd	 fd	Z	d	dZ
 xZS )
GenericCmsPermissionAdminc                     t         N)NotImplementedErrorselfuserr   s      C/home/dcms/DCMS/lib/python3.12/site-packages/cms/admin/useradmin.pyget_subordinatesz*GenericCmsPermissionAdmin.get_subordinates   s    !!    c                     t         j                  j                  |      }	 t        |j                  |       y# t
        $ r Y yw xY w)zq
        User is able to add/change objects only if he haves can change
        permission on some page.
        FT)r   objectsget_currentr   r   r   )r   requestr   s      r    "_has_change_permissions_permissionz<GenericCmsPermissionAdmin._has_change_permissions_permission!   sD    
 ||''0	%gllD9  & 		s   8 	AAc                 L    t        |   ||fi |}|j                  |_        |S r   )superget_formr   _current_user)r   r&   objkwargs
form_class	__class__s        r    r*   z"GenericCmsPermissionAdmin.get_form.   s+    W%gs=f=
#*<<
 r"   c                     t         |   |      }t        j                  j	                  |      }| j                  |j                  |      j                  dd      }|j                  |      S )NpkTflat)pk__in)	r)   get_querysetr   r$   r%   r!   r   values_listfilter)r   r&   querysetr   user_idsr/   s        r    r5   z&GenericCmsPermissionAdmin.get_queryset3   s^    7'0||''0((t<HHTXHYh//r"   c                 J    t         |   |      }|sy| j                  |      S NF)r)   has_add_permissionr'   )r   r&   has_model_permr/   s      r    r<   z,GenericCmsPermissionAdmin.has_add_permission9   s)    3G<66w??r"   c                 L    t         |   ||      }|sy| j                  |      S r;   )r)   has_change_permissionr'   r   r&   r,   r=   r/   s       r    r?   z/GenericCmsPermissionAdmin.has_change_permission@   +    6wD66w??r"   c                 L    t         |   ||      }|sy| j                  |      S r;   )r)   has_delete_permissionr'   r@   s       r    rC   z/GenericCmsPermissionAdmin.has_delete_permissionG   rA   r"   c                 &    | j                  ||      S r   )r?   )r   r&   r,   s      r    has_view_permissionz-GenericCmsPermissionAdmin.has_view_permissionN   s     ))'377r"   r   )__name__
__module____qualname__r!   r'   r*   r5   r<   r?   rC   rE   __classcell__r/   s   @r    r   r      s.    "
0@@@8r"   r   c                   8     e Zd ZeZeZd Zd fd	Z fdZ	 xZ
S )PageUserAdminc                 <    t        ||      j                  dd      S Nr1   Tr2   )r   r6   r   s      r    r!   zPageUserAdmin.get_subordinatesY   s    $T40<<T<MMr"   c                 r    t         |   ||      }|j                  j                  st	        |      dgz   }|S )Nis_superuser)r)   get_readonly_fieldsr   rP   list)r   r&   r,   fieldsr/   s       r    rQ   z!PageUserAdmin.get_readonly_fields\   s9    ,Wc:||(( &\^$44Fr"   c                 ^    |sd|_         |j                  |_        t        |   ||||       y )NT)is_staffr   
created_byr)   
save_model)r   r&   r,   formchanger/   s        r    rW   zPageUserAdmin.save_modele   s-      CL$\\CN7Cv6r"   r   )rF   rG   rH   r
   rX   r   modelr!   rQ   rW   rI   rJ   s   @r    rL   rL   U   s"    DEN7 7r"   rL   c                   0    e Zd ZeZdZdddifgZddZd Zy)PageUserGroupAdmin)namerV   NrS   )r]   c                    t        | j                        }t        t        d      ft        t        d      ft
        t        d      ff}t        |      D ]  \  }}g }|\  }}	|j                  j                         }
dD ]B  }t        ||      }|j                  j                  |      s,|j                  d| d|
        D |sq|j                  d|z   |	d	|fif        |S )
z
        Nobody can grant more than he haves, so check for user permissions
        to Page and User model and render fieldset depending on them.
        zPage permissionszUser & Group permissionszPage permissions management)addrY   delete)actioncan__   rS   )r   	fieldsetsr   r	   r   r   	enumeraterF   lowerr   r   has_permappendinsert)r   r&   r,   re   perm_modelsi
perm_modelrS   rZ   titler]   key	perm_codes                r    get_fieldsetsz PageUserGroupAdmin.get_fieldsetsw   s    
 T^^,	7-./w9:;W%BCD

 '{3 		HMAzF%LE5>>'')D2 79%L	<<((3MMDQtf"567   QF90E(FG		H r"   c                 <    t        ||      j                  dd      S rN   )r   r6   r   s      r    r!   z#PageUserGroupAdmin.get_subordinates   s    %dD1==d=NNr"   r   )	rF   rG   rH   r   rX   list_displayre   rq   r!    r"   r    r\   r\   o   s-    D)L 
)$%I.Or"   r\   
PERMISSIONN)-copyr   django.contribr   django.contrib.adminr   r   django.contrib.authr   django.contrib.sites.modelsr   django.utils.translationr	   cms.admin.formsr
   r   cms.exceptionsr   
cms.modelsr   r   r   r   cms.utils.compat.formsr   cms.utils.confr   cms.utils.permissionsr   r   r   r   
user_modelr   type__annotations__	_registryitemsrZ   admin_instancer/   r   rL   r\   registerrt   r"   r    <module>r      s       1 . , , A 1 D D , *  
 )T* )!^^113 /E>
$../
68 68r7-{ 74 O2E4D4D  OF < 	JJ-0	JJ'9: !r"   