
    Bh                         d dl mZ d dlmZ d dlmZmZ d dlmZ  e       Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)    )get_user_model)clear_user_permission_cache)PageUserPageUserGroup)	menu_poolc                    ddl m}  |       }|r|r|j                  ryt        | j                  |      }|j
                  j                  | j
                         |j                          t        |        t        j                  d       y)a	  Signal called when new user is created, required only when CMS_PERMISSION.
    Assigns creator of the user to PageUserInfo model, so we know who had created
    this user account.

    Flushes permission cache for the user.

    requires: CurrentUserMiddleware
    r   get_current_userN)user_ptr_id
created_byTall)cms.utils.permissionsr
   is_anonymousr   pk__dict__updatesaver   r   clearinstancerawcreatedkwargsr
   creator	page_users          G/home/dcms/DCMS/lib/python3.12/site-packages/cms/signals/permissions.pypost_save_userr   
   si     7  G'W%9%9X[[WEIh//0NN)OO    c                     ddl m}  |       }|r|r|j                  ryt        | j                  |      }|j
                  j                  | j
                         |j                          y)zThe same like post_save_user, but for Group, required only when
    CMS_PERMISSION.
    Assigns creator of the group to PageUserGroupInfo model, so we know who had
    created this user account.

    requires: CurrentUserMiddleware
    r   r	   N)group_ptr_idr   )r   r
   r   r   r   r   r   r   r   s          r   post_save_user_groupr"   "   sU     7  G'W%9%98;;7KIh//0NNr   c                 F    t        |        t        j                  d       y NTr   r   r   r   r   r   r   s      r   pre_save_userr'   5       )OOr   c                 F    t        |        t        j                  d       y r$   r%   r   r   s     r   pre_delete_userr+   :   r(   r   c                     | j                   rCt        j                  d       | j                  }|j	                         D ]  }t        |        y y r$   )r   r   r   user_setr   r   )r   r   r   r-   users        r   pre_save_groupr/   ?   sB    {{D!$$LLN 	.D'-	. r   c                     | j                   }t        j                  d       |j                         D ]  }t	        |        y r$   )r-   r   r   r   r   )r   r   r-   r.   s       r   pre_delete_groupr1   G   s6      HOO *#D)*r   c                     |dv rUt        j                  d       |r1t        j                  j	                  |      D ]  }t        |        y t        |        y y )N)pre_add
pre_removeTr   )pk__in)r   r   Userobjectsfilterr   )r   actionreversepk_setr   r.   s         r   user_m2m_changedr<   N   sX       	D!++6+: 2+D12 (1r   c                 $   | j                   r+t        | j                          t        j                  d       | j                  rM| j                  j
                  }|j                         D ]  }t        |        t        j                  d       y y r$   )r.   r   r   r   groupr-   r   )r   r-   r.   s      r   _clear_users_permissionsr?   [   se    }}#HMM2D!~~>>**LLN 	.D'-	.D!	 r   c                     t        |        y Nr?   r&   s      r   pre_save_pagepermissionrC   f   
    X&r   c                     t        |        y rA   rB   r*   s     r   pre_delete_pagepermissionrF   j   rD   r   c                     t        |        y rA   rB   r&   s      r   pre_save_globalpagepermissionrH   n   rD   r   c                     t        |        y rA   rB   r*   s     r   pre_delete_globalpagepermissionrJ   r   rD   r   N)django.contrib.authr   cms.cache.permissionsr   
cms.modelsr   r   menus.menu_poolr   r6   r   r"   r'   r+   r/   r1   r<   r?   rC   rF   rH   rJ    r   r   <module>rP      sU    . = . %0&

.*
2"''''r   