U
    7i                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)
cmf_personc                   @   s   e Zd Zejjddddg ZedddddZee	d	d
d	dde
dddZeddddZedd Zeddd	dddZdS )	CmfPersonregister_sdesk_clientsdesk_updatesdesk_set_avatar	sdesk_getN)company_namephone_numberc          	      O   s\   d }|r>t jj|d}|r&tddd t j|||d}|  | ||||dd}|  |S )N)nameu^   Попросите ваших коллег пригласить вас через ссылкуT)abort)r   Zemail1Zphone1)r   loginZphone_mobilecompanyservicedesk_allow)models
CmfCompanygetZ	cmf_alertsave)	clsr   r   r	   r
   argsZkargsr   user r   *./modules/servicedesk/models/cmf_person.py#register_sdesk_user_without_project   s    z-CmfPerson.register_sdesk_user_without_projectTu2   Добавление клиента в ServiceDesk)Z	only_oncedescriptionZshow_bg_progressbar)emailsc              
   O   s  ddl m} ddl}g }tjj| dgd}tjj|dds\tj|j	ks\tjj
s\tjtjkr| }	|D ]}
|
dkrvqf|
 }
dd	d
|
gdd
|
gg}td|  tjj|dgd}d}|sd}|rtjj|d}tj|
|
|dddd}t  |  W 5 Q R X |rt|
tjtt| tt| d d|
d}td|  tjjj|d< t|}t|}tjjdgddjj}|
d||d}|	jt ddd d|t!j"ddd}td| d |  |j#d!ks|j$d"kr|% }td#|
 d$|  qfntd%|
 d& tj&jd'd(|gd)d(d*ggd+gd}|rlt  |j'(| |jdd, W 5 Q R X |(|j)j qf|S t*d-tj dS ).uD   
        Добавить клиента для ServiceDesk
        r   )sessionN	cmf_owner)idfieldszsdesk-agent:default)Z	role_codeORemailZILIKEr   u"   Ищем пользователя Zrg_member_of)filterr   FT)r   )r   r!   r   r   Z
user_localZemail_if_self_changesi:	 Zguid)r   ZissZiatZexpZjtisubzregister_persons:frominvite_must_change_password)r   Zcache_inmemoryZinvite_by_email)r!   actioninvite_tokenr%   )absoluteZinternalzservicedesk/auth/signup   )datacookiestimeoutZverifyz,    zSigned up successfullyuE   ERROR: Не удалось отправить приглашение z: u   Пользователь uZ    уже существует, пропускаем отправку приглашенияparent=zproject_role.codezsdesk-client:defaultmembers)Z	only_datau.   Операция не доступна для )+Zrequestsr   timer   Z
CmfProjectr   gZcurrent_userZin_project_roler   Zis_admincurrent_personZsystem_personlowerdebugr   r   ZcmfutilZdisable_aclr   dictZconfigZAPP_FQDNstrintr!   valueZ
create_jwtZrsa_sign_pack_jwtZCmfGlobalSettingsr%   ZpostZauth_base_hrefZrequestr+   Zstatus_codetextZjsonZCmfProjectRoleAssignr0   appendr   ZCmfPermissionError)Z
project_idr   r   r   kwargsr   r1   resultZprojectsr!   Z_filterZpersonZperson_is_newZpayloadZjwtr'   r%   r*   resZproject_roler   r   r   r      s    


  
zCmfPerson.register_sdesk_clientr"   c          	      O   sd   |sd S t jj|d}|tjkr$d S dddg}i }| D ]\}}||kr:|||< q:|j|| d S )Nr@   Z
first_name	last_nameZphone)r   r   r   r2   r3   itemsupdate)	r   r"   r   r<   r?   r   Z
new_kwargskvr   r   r   r   s   s    


zCmfPerson.sdesk_updatec                 O   s   d S )Nr   )r   r   r<   r   r   r   r      s    zCmfPerson.sdesk_getimage
image_typeset_gravatarc                O   s2   t j|d }|tjkrd S |j|||d d S )Nr   rF   )r   r   r   r2   r3   Z
set_avatar)r   rG   rH   rI   r   r<   r?   r   r   r   r      s    
zCmfPerson.sdesk_set_avatar)N)__name__
__module____qualname__r   r   Zapi_methodsclassmethodr   staticmethodZcmf_deferred_joblistr   r   r   r   r   r   r   r   r      s"   W
r   N)Zcmf.includeZmodules.person.modelsr   r   r   r   r   r   <module>   s   