
    oi                     h    d dl  d dlZ G d dej                  j                  j
                        Zy)    )*Nc                        e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zd Zd fd	Zdd fd
Z xZS )CmfPersonGroupc                 H    | j                  g d      }|st        d      |S )N)code==Usersfilteru)   Группа Users - не найдена.getKeyError)clsusers_groups      ./cmf/models/cmf_person_group.py
user_groupzCmfPersonGroup.user_group   s(    gg%<g=FGG    c                 H    | j                  g d      }|st        d      |S )N)r   r   Adminsr
   u*   Группа Admins - не найдена.r   )r   admins_groups     r   admin_groupzCmfPersonGroup.admin_group   s(    ww&>w?GHHr   c                 H    | j                  g d      }|st        d      |S )N)r   r   ContactAdminsr
   um   Группа Редакторы Компаний и Контактов (ContactAdmins) - не найдена.r   )r   contact_admins_groups     r   r   z#CmfPersonGroup.contact_admins_group   s2    "ww.MwN#  K  L  L##r   c                 H    | j                  g d      }|st        d      |S )N)r   r   Supportr
   u+   Группа Support - не найдена.r   r   ress     r   support_groupzCmfPersonGroup.support_group   s'    gg6g7HII
r   c                 P    | j                  g dg dg      }|st        d      |S )N)r   r   Guestsystemr   Tr
   u)   Группа Guest - не найдена.r   r   s     r   guest_groupzCmfPersonGroup.guest_group"   s-    gg57MNgOFGG
r   c                 P    | j                  g dg dg      }|st        d      |S )N)r   r   	ShareLinkr"   r
   u-   Группа ShareLink - не найдена.r   r   s     r   sharelink_groupzCmfPersonGroup.sharelink_group)   s-    gg9;QRgSJKK
r   c                 n    | j                  g dg dg      }|s | dd      }|j                          |S )N)namer      LDAP пользователиr"   r
   r*   Tr)   r#   r   saver   s     r   
ldap_groupzCmfPersonGroup.ldap_group0   7    ggMOefgg:4HCHHJ
r   c                 n    | j                  g dg dg      }|s | dd      }|j                          |S )N)r)   r      Jira пользователиr"   r
   r1   Tr+   r,   r   s     r   
jira_groupzCmfPersonGroup.jira_group8   r/   r   c                 n    | j                  g dg dg      }|s | dd      }|j                          |S )N)r)   r   #   Confluence пользователиr"   r
   r4   Tr+   r,   r   s     r   confluence_groupzCmfPersonGroup.confluence_group@   s7    ggSUklgm@NCHHJ
r   c                 n    | j                  g dg dg      }|s | dd      }|j                          |S )N)r)   r   '   Yandex Tracker пользователиr"   r
   r7   Tr+   r,   r   s     r   tracker_groupzCmfPersonGroup.tracker_groupH   s7    ggWYopgqDTRCHHJ
r   c                 n    | j                  g dg dg      }|s | dd      }|j                          |S )N)r)   r   !   YouTrack пользователиr"   r
   r:   Tr+   r,   r   s     r   youtrack_groupzCmfPersonGroup.youtrack_groupP   s7    ggQSijgk>tLCHHJ
r   c                     | j                   j                  sy t        dd       t        t        j
                  j                  | j                   j                  dd| j                  j                  ggd       y )Nu   У всех пользователей группы будут изменены настройки двухфакторной авторизации.Fabortrg_member_ofIN)two_factor_opt_filter)kwargs)	rA   
is_changed	cmf_alertschedule_deferred_jobmodels	CmfPersoninit_2fa_settingsvalueid)selfs    r   _calc_two_factorzCmfPersonGroup._calc_two_factorX   sr    ""--  j  rw  	xf..@@\`\o\o\u\uR`bfimipipivivhwQxJz 	{r   c                 b   | j                   j                  |       dk(  rt        dd       | j                  se| j                   j                  rO| j
                  dk(  r@| j                   j                         s&|s$t        d| j                   j                   d       | j                   j                  r6| j
                  dk(  r'| j                   j                         rt        dd       | j                   j                  rP| j
                  d	k(  rA| j                   j                  D ](  ^}}}|d
k(  s|j
                  dk(  st        dd       * | j                   j                  r*t        j                  j                  | j                  g       | j                          t        | <  dd|i|S )NappenduB   Нельзя добавлять группу саму в себя.Tr=   r   uO   Нельзя удалять последнего Администратора. r&   u   Нельзя добавить пользователя в группу ShareLink. Она только для системного пользования.ProjectAdminsremoveProjectCreatorsuU   Группа ProjectCreators всегда является членом ProjectAdminsforce )
rg_members
in_changesrE   is_newrD   r   loadold_changesrG   CmfAccessListsubject_changed_hookrK   rM   superr-   )rL   rS   rC   change_action
change_obj_	__class__s         r   r-   zCmfPersonGroup.save_   sl   ??%%d+x7Zcgh{{t99dii8>S,,.ughlhwhwh{h{g|}  FJ  K ??%%$)){*BtG[G[G]  r  {  @ ??%%$))*F151I1I D-zA H,DU1U u  C  DD ??%%  55twwi@w|2%2622r   F)rS   c                    | j                   t        j                  j                   k(  rt        dd       | j	                  ddg       g | _        g | _        t        |    |d|i|S )Nu2   Нельзя удалить самого себя!Tr=   rU   r?   rS   )	rK   gcurrent_personrE   load_fieldsrU   r?   r]   delete)rL   rS   argsrC   ra   s       r   rf   zCmfPersonGroup.deletez   sb    77a&&)))JRVW,78w~t;5;F;;r   )N)__name__
__module____qualname__classmethodr   r   r   r   r$   r'   r.   r2   r5   r8   r;   rM   r-   rf   __classcell__)ra   s   @r   r   r      s        $ $                {36 #( < <r   r   )cmf.includecmf.fields.cmf_person_groupcmffieldscmf_person_groupr   rT   r   r   <module>rr      s)     "|<SZZ00?? |<r   