
    Bhf                     *   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	 d dl
mZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlmZmZ d dlmZmZ d dlmZ d dlm Z  g Z! e       Z"e	Z#ejH                  jK                         D ]  \  Z&Z'e&e"k(  se'jP                  Z#  G d dejR                        Z) G d de)      Z* G d de*      Z+ G d dejX                        Z- ed      r0ej
                  j]                  ee-       e!j_                  e+e*g       yy)    )deepcopy)admin)site)get_user_model)	UserAdmin)Site)OperationalError)gettext_lazy)GlobalPagePermissionAdminFormPagePermissionInlineAdminFormViewRestrictionInlineAdminForm)NoPermissionsException)GlobalPagePermissionPagePermission)page_permissionspermissions)get_cms_setting)classpropertyc                       e Zd Zy)TabularInlineN)__name__
__module____qualname__     I/home/dcms/DCMS/lib/python3.12/site-packages/cms/admin/permissionadmin.pyr   r      s    r   r   c                   V     e Zd ZeZeZdZdZddZ	ddZ
ed        Zd Zd fd	Z xZS )	PagePermissionInlineAdminr   Fc                 `    |syt        j                  |j                  ||j                        S )NF)pager   )r    user_can_change_page_permissionsuserr   selfrequestobjs      r   has_change_permissionz/PagePermissionInlineAdmin.has_change_permission*   s,    @@LL
 	
r   c                 &    | j                  ||      S N)r'   r#   s      r   has_add_permissionz,PagePermissionInlineAdmin.has_add_permission3   s    ))'377r   c                     t        d      }	 |xr% t               j                  j                         |kD  }|rdgS g S # t        $ r d}Y w xY wNRAW_ID_USERSFr"   r   r   objectscountr	   cls	thresholds     r   raw_id_fieldsz'PagePermissionInlineAdmin.raw_id_fields6   [     $N3		!Rn&6&>&>&D&D&F&RI %x,",   	I	   )= A
Ac                 @   t         j                  j                  |      }	 | j                  j                  j	                  |j
                  |      }|j                  | j                        S # t        $ r' | j                  j                  j                         cY S w xY w)a-  
        Queryset change, so user with global change permissions can see
        all permissions. Otherwise user can see only permissions for
        peoples which are under him (he can't see his permissions, because
        this will lead to violation, when he can add more power to himself)
        )can_view)
r   r/   get_currentmodelsubordinate_to_userr"   r   nonefiltershow_with_view_permissions)r$   r%   r   qss       r   get_querysetz&PagePermissionInlineAdmin.get_querysetG   s     ||''0	-##77dKB yy$"A"AyBB & 	-::%%**,,	-s   0A- --BBc                    | j                   xs g }|r|j                  }|j                  |      s|j                  d       |j	                  |      s|j                  d       |j                  |      s|j                  d       |j                  |      s|j                  d       |j                  |      s|j                  d       ||d<   t        | $  |fd|i|}| j                  |      }||j                  |      }||_        |S )	z
        Some fields may be excluded here. User can change only
        permissions which are available for him. E.g. if user does not haves
        can_change flag, he can't change assign can_change permissions.
        can_add
can_deletecan_publishcan_change_advanced_settingscan_move_pageexcluder&   )r    )rG   r"   r*   appendhas_delete_permissionhas_publish_permission has_advanced_settings_permissionhas_move_page_permissionsuperget_formsetr@   r=   	_queryset)	r$   r%   r&   kwargsrG   r"   formset_clsr?   	__class__s	           r   rN   z%PagePermissionInlineAdmin.get_formsetW   s     ,,$"<<D))$/y),,T2|,--d3}-77==>//5/#yg)'EsEfEw'?$B "r   r)   )r   r   r   r   r:   r   formextrar>   r'   r*   r   r4   r@   rN   __classcell__)rR   s   @r   r   r   #   sF    E(DE!&
8 - - C  r   r   c                   8    e Zd ZdZeZ ed      Z ed      ZdZ	y)ViewRestrictionInlineAdminr   zView restrictionzView restrictionsTN)
r   r   r   rT   r   rS   _verbose_nameverbose_name_pluralr>   r   r   r   rW   rW   t   s)    E)D'(L/0!%r   rW   c                       e Zd Zg dZg dZeZg Zej                  D ]  Z	ej                  de	z          ej                  d       ej                  d       ej                  d       d Zd ZddZdd	Zed
        Zy)GlobalPagePermissionAdmin)r"   group
can_changerC   rD   can_change_permissionszuser__%sgroup__namerE   c                     t        d      }	 |xr% t               j                  j                         |kD  }t        | j                        }|r|j                  d       |S # t        $ r d}Y 7w xY wr,   )r   r   r/   r0   r	   r   list_filterremove)r$   r%   r3   filter_copys       r   get_list_filterz)GlobalPagePermissionAdmin.get_list_filter   sq    #N3		!Rn&6&>&>&D&D&F&RI t//0v&   	I	s   )A   A.-A.c                     t         j                  j                  |      }t        j                  |j
                  |      S r)   )r   r/   r9   r   user_can_add_global_permissionsr"   )r$   r%   r   s      r   r*   z,GlobalPagePermissionAdmin.has_add_permission   s-    ||''0::7<<NNr   Nc                     t         j                  j                  |      }t        j                  |j
                  |      S r)   )r   r/   r9   r   "user_can_change_global_permissionsr"   r$   r%   r&   r   s       r   r'   z/GlobalPagePermissionAdmin.has_change_permission   -    ||''0==gllDQQr   c                     t         j                  j                  |      }t        j                  |j
                  |      S r)   )r   r/   r9   r   "user_can_delete_global_permissionsr"   rj   s       r   rI   z/GlobalPagePermissionAdmin.has_delete_permission   rk   r   c                     t        d      }	 |xr% t               j                  j                         |kD  }|rdgS g S # t        $ r d}Y w xY wr,   r.   r1   s     r   r4   z'GlobalPagePermissionAdmin.raw_id_fields   r5   r6   r)   )r   r   r   list_displayrb   r   rS   search_fieldsadmin_classfieldrH   re   r*   r'   rI   r   r4   r   r   r   r\   r\   |   s    iLhK(DM** 1Z%/01'6756	ORR - -r   r\   
PERMISSIONN)0copyr   django.contribr   django.contrib.adminr   django.contrib.authr   django.contrib.auth.adminr   django.contrib.sites.modelsr   	django.dbr	   django.utils.translationr
   rX   cms.admin.formsr   r   r   cms.exceptionsr   
cms.modelsr   r   	cms.utilsr   r   cms.utils.confr   cms.utils.helpersr   PERMISSION_ADMIN_INLINES
user_modelrq   	_registryitemsr:   admin_instancerR   r   r   rW   
ModelAdminr\   registerextendr   r   r   <module>r      s       % . / , & 6 
 2 ; 3 * + 
!^^113 /E>
$../
	E'' 	N Nb&!: &3- 0 0 3-l < 	JJ,.GH##"!%  !r   