U
    ]d                     @   sX   d dl Z d dlT d dlmZ d dlmZmZ d dlmZ d dl	m	Z
 G dd deZdS )	    N)*)	BaseModel)
CmfM2MBase
CmfNumeric)CmfActiveEntity)datetimec                       s   e Zd Zedddd fdd
Z fddZ fdd	Zed fd
d	Z fddZ fddZ	dd Z
edd Zedd Zdd Z  ZS )
CmfCompany Nqueryfieldsfilterc                   sF   dddd gdddgg}ddddd	d
dg|d< t  j||||d|S )NORis_internal==FnametextcodeZphone1Zphone2Zemail1Zemail2Zfields_filterr
   )supersearch)clsr   r   r   argskwargs	__class__ &./modules/person/models/cmf_company.pyr      s       zCmfCompany.searchc                    s   t   ddg S )Nzdeals.status.status_typer   )r   save_preload_fieldsselfr   r   r   r      s    zCmfCompany.save_preload_fieldsc                    sb   | j js| j jrT| jsT| j r6| j jdkrPtddd ntjjdddgdgd| _ d S t	 
  d S )	NZsalesuP   Неправильный вид деятельности для компанииTabortr   r   r   r   r   )ZactivityZis_null
is_changedr   r   	cmf_alertmodelsZCmfActivitygetr   _calc_activityr   r   r   r   r'      s    zCmfCompany._calc_activityc                    sd   |dkrH|sg }|rH|rH| ddkrH|dd|gddddgddd ggg}t j|f|||d|S )	Npersonsr   FZ
company_idr   r   Z
user_local)object_fieldsr   	object_id)r&   r   field_options_list)r   Zrelation_field_namer)   r   r*   r   r   r   r   r+   &   s"      zCmfCompany.field_options_listc                    sR   |    t j||}| jjrN| jjrN| jjD ]}|jjdkr@q.|	dg q.|S )NZCLOSEDcompany)
_calc_servicedesk_allowr   saveZdealsvaluer   r#   statusZstatus_typeupdate)r   r   r   resZdealr   r   r   r.   3   s    zCmfCompany.savec                    sT   |  ddg | jD ]}d |_|  q| jD ]}d |_|  q.t j|| d S )Nzpersons.companyztasks.company)Zload_fieldsr(   r,   r.   Ztasksr   delete)r   r   r   personZtaskr   r   r   r3   =   s    



zCmfCompany.deletec                 C   sV   | j r
d S | jdkrR| jsRd| _ | jjdd }| rR|  j dt| 7  _ d S )Nr4   u   Новый клиент-    )r   typer   r   r/   
rpartitionisdigitint)r   Znumr   r   r   
_calc_nameJ   s    zCmfCompany._calc_namec              
   C   sD   t jtjsg S ttjd}t| W  5 Q R  S Q R X d S )Nr)	ospathexistsconfigDEMO_IDS_FILEopenjsonloadsread)r   fr   r   r   load_demo_dataT   s    zCmfCompany.load_demo_datac              
   C   sD  t  0 tjtjr(tjtjs6W 5 Q R  d S ttjd}t	
| }W 5 Q R X g }|D ]}tt|dd  }||krd|| |jdd|gdD ]B}t|tjr|j  |jrq|tjkr|jdd q|  qqdtjjd	d
dgd	gdD ]}d|_|jdd q tdtjgd ttj W 5 Q R X d S )Nr=   :r   idINr   Tforcer   ZLIKEu   Демо-данные%r"   r	   )Z	only_dataclear_demo_data)Zevent_persons)ZcmfutilZdisable_aclr>   r?   r@   rA   rB   isfilerC   rD   rE   rF   varsr%   splitappendlist
isinstanceZ
CmfProjectZ
is_defaultloadZCmfChatGroupr3   ZCmfDocumentr   r.   Zcmf_emit_eventgcurrent_userremove)r   rG   ZidsZ_modelsZ_idZmodelobjdocr   r   r   rO   [   s.    


zCmfCompany.clear_demo_datac                 C   s   | j jsd S | j sVtjjdd}tjjdd|gdd| gggd}|rVtd| d	d
 tjj| t	j
 dD ]}|jd	d |jrl|  qld S )Nzsdesk-client:default)r   Zproject_role=membersrK   rL   un   Чтобы убрать доступ в Service Desk, нужно убрать связь в проектах: Tr    )r,   r   rM   )Zservicedesk_allowr#   r%   ZCmfProjectRoler&   ZCmfProjectRoleAssignrT   r$   Z	CmfPersonrW   rX   r   r-   r.   )r   Z
sdesk_roleZactive_sdesk_projectsr4   r   r   r   r-   y   s    

z"CmfCompany._calc_servicedesk_allow)NNN)__name__
__module____qualname__classmethodr   r   r'   r+   r.   r3   r<   rH   rO   r-   __classcell__r   r   r   r   r   
   s   



r   )shutilZcmf.includeZcmf.models.base_modelr   Zcmf.fields.base_fieldsr   r   Zcommon.models.cmf_active_entityr   r   Zdtr   r   r   r   r   <module>   s   