B
    f,                 @   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   sn  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rZ| }	x|D ]}
|
dkrzqj|
 }
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sX|jdkrx|  }td|
 d|  qjdd|
g}td|  tj!j|dgd }|s|rtj"j|d!}tj!|
|
|dddd"}t#$  |%  W dQ R X tj&jd#d$|gd%d$d&ggd'gd }|rDt#$  |j'(| |j%dd( W dQ R X |(|j)j qjW |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absoluteZinternalzservicedesk/auth/signup   F)datacookiesZ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_base_hrefZ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   r      sv    




zCmfPerson.register_sdesk_client)r*   c      	      O   sh   |sd S t jj|d}|tjkr$d S dddg}i }x$| D ]\}}||kr<|||< q<W |j|| d S )N)r*   Z
first_name	last_nameZphone)r   r   r   r/   r0   itemsupdate)	r   r*   r   r9   r<   r   Z
new_kwargskvr   r   r   r   i   s    

zCmfPerson.sdesk_updatec             O   s   d S )Nr   )r   r   r9   r   r   r   r   y   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   )rB   rC   rD   )r   r   r   r/   r0   Z
set_avatar)r   rB   rC   rD   r   r9   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   Mr   N)Zcmf.includeZmodules.person.modelsr   r   r   r   r   r   <module>   s   