U
    XdQ                     @   s6   d dl mZ d dlT d dlmZ G dd dejZdS )    )fields)*)cmf_auth_plugin_datac                       sL   e Zd Zdd Z fddZdddd fdd	
Zd
d fdd
Z  ZS )CmfAuthPluginDatac                 C   s  |  ddddddddd	d
ddg | j}| jj}d|krL| j d| jj }|  }ddddddddg}tj	 }| j
stjj||d}|r||jkr|| _
| j
s(| jr(tjj| j|d}t|dkr| jjd| j  nB|r(|d }|r(||jkr(| jjd|  || _
|| j
_| j
s| jrtjj| j|d}t|dkrp| jjd| j  nB|r|d }|r||jkr| jjd|  || _
|| j
_| j
stj|d| _
d | j
_| j| j
_| j| j
_| j| j
_| j| j
_| j
jtj  d!| j
_|| j
_| jD ]}d"| d"}tjjdd#d$| d$g| j|  d%}	|	stjjd&d'| j| d& g| j|  d%}	|	stj| j| d& |d(}	||	j kr|	j | |	_| j|   D ]0\}
}|
dkrqt!|	|
rt"|	|
| q|	j#r|	$  | j
j|	 q"t| j
jD ]h}	|	 dd)g |	jr8|	jrp|	jj%| jj%krpq8|	jr8|	jd*d+ | jD kr8| j
j&|	 q8| j
jtj	  | j
j$  d!| _'| j$d d, d-S ).uP   
        Создание/обновление пользователя
        r   zauth_plugin.domainperson.user_localperson.rg_member_of.ext_idzperson.loginperson.rg_member_ofzperson.namezperson.auth_optionsgroupszperson.emailzperson.last_namezperson.first_name@ext_idrg_member_ofZauth_options
user_localdoes_not_workemail	last_name
first_name)loginr   )r   r      u7   Несколько пользователей с email r   u/   Нашли пользователя по email )namer   u6   Несколько пользователей с name u4   Нашли пользователя по имени )r   TF::ZLIKE%)filterr   r   z==)r   r   auth_pluginc                 S   s   g | ]}d | d qS )r    ).0group_idr   r   1./modules/settings/models/cmf_auth_plugin_data.py
<listcomp>\   s     z4CmfAuthPluginData.process_person.<locals>.<listcomp>)Z	only_dataN)(load_fieldsr   valuer   domainlowerstripmodelsCmfPersonGroup
ldap_grouppersonZ	CmfPersongetr   r   listlenloggerwarninfor   r   r   r   appendZ
user_groupr   	ext_loginr	   keysr   loaditemshasattrsetattr
is_changedsaveidremovedirty)selfr.   r   _fieldsldap_grpr&   Zpersonsr   r   groupkeyr   r   r   r   process_person   s              




(
" z CmfAuthPluginData.process_personc                    s   t   dddddg S )Nr   r   r   r8   zauth_plugin.auto_sync)supersave_preload_fields)r9   	__class__r   r   r@   d   s    z%CmfAuthPluginData.save_preload_fieldsr   Tdepthnotifyemitc                   s>   | j r| j | _| jr$| jjr$|   t j||||d|S )NrC   )r4   r8   r   Z	auto_syncr>   r?   r5   )r9   rD   rE   rF   argskwargsrA   r   r   r5   h   s
    zCmfAuthPluginData.saveF)forcec                   s   |  dddddg | jrv| jjs@| jjd| j  d| j_tj	 }|| jj
krd| jj
| | jj  d | _t j|d|i|S )	Nzperson.does_not_workr   r   zperson.is_adminzperson.is_supportu    Блокируем учетку TrI   )r   r&   Zis_adminr   r*   r,   r   r#   r$   r%   r   r7   r   r5   r?   delete)r9   rI   rG   rH   r;   rA   r   r   rJ   o   s    
zCmfAuthPluginData.delete)__name__
__module____qualname__r>   r@   r5   rJ   __classcell__r   r   rA   r   r      s   ]r   N)Zcmfr   Zcmf.includeZmodules.settings.fieldsr   r   r   r   r   r   <module>   s   