U
    Ef=                     @   s*   d dl T d dlZG dd dejjjZdS )    )*Nc                       s   e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zdd Zd fdd	Zdd fdd
Z  ZS )CmfPersonGroupc                 C   s"   | j dddgd}|std|S )Ncode==ZUsersfilteru)   Группа Users - не найдена.getKeyError)clsZusers_group r    ./cmf/models/cmf_person_group.py
user_group   s    zCmfPersonGroup.user_groupc                 C   s"   | j dddgd}|std|S )Nr   r   Adminsr   u*   Группа Admins - не найдена.r   )r   Zadmins_groupr   r   r   admin_group   s    zCmfPersonGroup.admin_groupc                 C   s"   | j dddgd}|std|S )Nr   r   ZSupportr   u+   Группа Support - не найдена.r   r   resr   r   r   support_group   s    zCmfPersonGroup.support_groupc                 C   s,   | j dddgdddggd}|s(td|S )Nr   r   ZGuestsystemTr   u)   Группа Guest - не найдена.r   r   r   r   r   guest_group   s    zCmfPersonGroup.guest_groupc                 C   s,   | j dddgdddggd}|s(td|S )Nr   r   	ShareLinkr   Tr   u-   Группа ShareLink - не найдена.r   r   r   r   r   sharelink_group"   s    zCmfPersonGroup.sharelink_groupc                 C   s8   | j dddgdddggd}|s4| ddd}|  |S )Nnamer   u   LDAP пользователиr   Tr   r   r   r	   saver   r   r   r   
ldap_group)   s
    zCmfPersonGroup.ldap_groupc                 C   s8   | j dddgdddggd}|s4| ddd}|  |S )Nr   r   u   Jira пользователиr   Tr   r   r   r   r   r   r   
jira_group1   s
    zCmfPersonGroup.jira_groupc                 C   s8   | j dddgdddggd}|s4| ddd}|  |S )Nr   r   u#   Confluence пользователиr   Tr   r   r   r   r   r   r   confluence_group9   s
    zCmfPersonGroup.confluence_groupc                 C   s8   | j dddgdddggd}|s4| ddd}|  |S )Nr   r   u'   Yandex Tracker пользователиr   Tr   r   r   r   r   r   r   tracker_groupA   s
    zCmfPersonGroup.tracker_groupc                 C   sB   | j jsd S tddd ttjj| j jdd| jjggdd d S )Nu   У всех пользователей группы будут изменены настройки двухфакторной авторизации.Fabortrg_member_ofIN)two_factor_optZ_filter)kwargs)	r$   
is_changed	cmf_alertZschedule_deferred_jobmodelsZ	CmfPersonZinit_2fa_settingsvalueid)selfr   r   r   _calc_two_factorI   s    zCmfPersonGroup._calc_two_factorNc                    s  | j | dkrtddd | jsX| j jrX| jdkrX| j  sX|sXtd| j j dd | j jr| jdkr| j  rtddd | j jr| jd	kr| j jD ](^}}}|d
kr|jdkrtddd q| j jrt	j
| jg t	j  |   t jf d|i|S )NappenduB   Нельзя добавлять группу саму в себя.Tr    r   uO   Нельзя удалять последнего Администратора. r   u   Нельзя добавить пользователя в группу ShareLink. Она только для системного пользования.ZProjectAdminsremoveZProjectCreatorsuU   Группа ProjectCreators всегда является членом ProjectAdminsforce)
rg_membersZ
in_changesr'   Zis_newr&   r   loadoldZ_changesr(   ZCmfAccessListZsubject_changed_hookr*   ZCmfProjectRoleAssignZtrigger_reloadr,   superr   )r+   r/   r%   Zchange_actionZ
change_obj_	__class__r   r   r   P   s&    
zCmfPersonGroup.saveF)r/   c                   sJ   | j tjj krtddd | ddg g | _g | _t j|d|i|S )Nu2   Нельзя удалить самого себя!Tr    r0   r"   r/   )	r*   gZcurrent_personr'   Zload_fieldsr0   r"   r3   delete)r+   r/   argsr%   r5   r   r   r8   l   s    zCmfPersonGroup.delete)N)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r   r   r,   r   r8   __classcell__r   r   r5   r   r      s*   








r   )Zcmf.includeZcmf.fields.cmf_person_groupZcmfZfieldsZcmf_person_groupr   r   r   r   r   <module>   s   