B
    Ff=                 @   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codez==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   z==Admins)r   u*   Группа Admins - не найдена.)r   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   z==ZSupport)r   u+   Группа Support - не найдена.)r   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   z==ZGuestsystemT)r   u)   Группа Guest - не найдена.)r   r   )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   z==	ShareLinkr   T)r   u-   Группа ShareLink - не найдена.)r   r   )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namez==u   LDAP пользователиr   T)r   )r   r   )r   save)r   r   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   z==u   Jira пользователиr   T)r   )r   r   )r   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   z==u#   Confluence пользователиr   T)r   )r   r   )r   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   z==u'   Yandex Tracker пользователиr   T)r   )r   r   )r   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rx4| j jD ](^}}}|d
kr|jdkrtddd qW | j jrt	j
| jg t	j  |   t jf d|i|S )NappenduB   Нельзя добавлять группу саму в себя.T)r   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   Нельзя удалить самого себя!T)r   r)   r   r(   )	r#   gZcurrent_personr    Zload_fieldsr)   r   r,   delete)r$   r(   argsr   )r.   r	   r
   r0   l   s    zCmfPersonGroup.delete)N)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r   r   r%   r   r0   __classcell__r	   r	   )r.   r
   r      s   r   )Zcmf.includeZcmf.fields.cmf_person_groupZcmfZfieldsZcmf_person_groupr   r	   r	   r	   r
   <module>   s   