U
    [cK                     @   s2   d dl Z d dlT d dlmZ G dd dejZdS )    N)*)
cmf_personc                       s   e Zd Zdd Zdd Z fddZ fddZd fd
d	Zedd Z	e
dd Ze
dddZdd Zedd Z  ZS )	CmfPersonc                 C   sT   | j js| jjsdS tj }| j r>|| jjkrP| j| n|| jjkrPd| _ dS )u   
        Вычилсяем является ли пользователь сотрудником техподдержки
        NT)
is_support
is_changedrg_member_ofmodelsCmfPersonGroupsupport_groupvalueappend)selfr
    r   ./models/cmf_person.py_check_support   s    
zCmfPerson._check_supportc                 C   s   | j js| jjrJ| j  tj }d| _ |jj	dd | jD krd| _ n>| j r| j  tj }|jj	dd | jD kr| j
| dS )u\   
        Вычисляем локальный ли это пользователь
        Fc                 S   s   g | ]}|j jqS r   idr   .0gr   r   r   
<listcomp>   s     z*CmfPerson._check_local.<locals>.<listcomp>Tc                 S   s   g | ]}|j jqS r   r   r   r   r   r   r   "   s     N)
user_localis_nullr   r   loadr   r	   
user_groupr   r   r   )r   r   r   r   r   _check_local   s    



zCmfPerson._check_localc                    s   t   ddddg S )Nr   r   r   login)supersave_preload_fieldsr   	__class__r   r   r   %   s    zCmfPerson.save_preload_fieldsc                    s*   |    |   |   tt| j||S N)r   r   _calc_loginr   r   save)r   argskwargsr    r   r   r$   (   s    zCmfPerson.saveTc                    s    t j  t jf d|i|S )N	recursive)r   ZCmfAccessListZcheck_admin_moder   delete)r   r'   r&   r    r   r   r(   .   s    
zCmfPerson.deletec                 C   s   | t j j kp| jS r"   )r   r	   Zadmin_groupZ
rg_membersZ
all_nestedr   r   r   r   r   	_is_admin3   s    zCmfPerson._is_adminc                 C   s   | j ddS )Nz.CmfPerson:00000000-0000-0000-0000-000000000001)r   )get)clsr   r   r   system_person7   s    zCmfPerson.system_personc                 O   s   t jjtjjdddddgdS )Nr   Zonline_statusZon_vacationr   Zis_admin)r   Zfields)r   r   r*   r   Zcurrent_personr   )r+   Zcreate_args_kwargsr   r   r   get_current_user;   s     zCmfPerson.get_current_userc                 C   s*   | j jrd S | j j  | _ | j | _d S r"   )r   r   r   lowerstripZemailr   r   r   r   r#   A   s    zCmfPerson._calc_loginc                 C   s   d| j  d| j d| j S )N/)Z	ui_moduleZui_namecoder   r   r   r   hrefH   s    zCmfPerson.href)T)T)__name__
__module____qualname__r   r   r   r$   r(   propertyr)   classmethodr,   r/   r#   r4   __classcell__r   r   r    r   r      s   

r   )sysZcmf.includeZ
cmf.fieldsr   r   r   r   r   r   <module>   s   