U
    Ef-                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)
cmf_personc                   @   sv   e Zd 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 )	CmfPersonN)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   sb  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rN| }	|D ]}
|
dkrvqf|
 }
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j d|tjddd}td| d|  |jdksN|jdkrn|  }td|
 d|  qfdd|
g}td|  tj!j|dgd}|s|rtj"j|d }tj!|
|
|dddd!}t#$  |%  W 5 Q R X tj&jd"d#|gd$d#d%ggd&gd}|r:t#$  |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_codei:	 Zguid)r	   ZissZiatZexpZjtisubzregister_persons:frominvite_must_change_passwordT)r   Zcache_inmemoryZinvite_by_email)emailactioninvite_tokenr   z/servicedesk/auth/signup   F)datacookiestimeoutZverifyz,    zSigned up successfullyuE   ERROR: Не удалось отправить приглашение z: r   z==u"   Ищем пользователя Zrg_member_of)filterr   )r   )r	   r   r
   r   Z
user_localZemail_if_self_changes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dictZconfigZAPP_FQDNstrintdebugr   valueZ
create_jwtZrsa_sign_pack_jwtZCmfGlobalSettingsr   ZpostZAUTH_SERVER_URLZrequestr$   Zstatus_codetextZjsonr   r   ZcmfutilZdisable_aclr   ZCmfProjectRoleAssignr*   appendr   ZCmfPermissionError)Z
project_idr   r
   r   kwargsr   r+   resultZprojectsr   ZpayloadZjwtr!   r   r#   resZ_filterZpersonZproject_roler   r   r   register_sdesk_client   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   r,   r-   itemsupdate)	r   r'   r   r6   r9   r   Z
new_kwargskvr   r   r   sdesk_updatea   s    


zCmfPerson.sdesk_updatec                 O   s   d S )Nr   )r   r   r6   r   r   r   	sdesk_getq   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   rC   )r   r   r   r,   r-   Z
set_avatar)r   rD   rE   rF   r   r6   r9   r   r   r   sdesk_set_avatarv   s    
zCmfPerson.sdesk_set_avatar)N)__name__
__module____qualname__classmethodr   staticmethodZcmf_deferred_joblistr:   rA   rB   rG   r   r   r   r   r      s   L
r   N)Zcmf.includeZmodules.person.modelsr   r   r   r   r   r   <module>   s   