U
    whc                     @   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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   s8   | j dddgdddggd}|s4| ddd}|  |S )Nr   r   u!   YouTrack пользователиr   Tr   r   r   r   r   r   r   youtrack_groupI   s
    zCmfPersonGroup.youtrack_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_factorQ   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,   r0   r&   Zchange_actionZ
change_obj_	__class__r   r   r   X   s&    
zCmfPersonGroup.saveF)r0   c                   sJ   | j tjj krtddd | ddg g | _g | _t j|d|i|S )Nu2   Нельзя удалить самого себя!Tr!   r1   r#   r0   )	r+   gZcurrent_personr(   Zload_fieldsr1   r#   r4   delete)r,   r0   argsr&   r6   r   r   r9   t   s    zCmfPersonGroup.delete)N)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r   r   r    r-   r   r9   __classcell__r   r   r6   r   r      s.   









r   )Zcmf.includeZcmf.fields.cmf_person_groupZcmfZfieldsZcmf_person_groupr   r   r   r   r   <module>   s   