B
    Zf                 @   s`   d dl Z 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dZejdddg 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 fddZdd Zedd Zedd Zdd Z  ZS )
CmfCompanyTclear_demo_dataload_demo_datasearch 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_internalz==Fnametextcodephone1phone2email1email2Zfields_filter)r   r   r   )superr   )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)self)r   r   r   r       s    zCmfCompany.save_preload_fieldsc                sd   | j js| j jrV| jsV| j r6| j jdkrRtddd ntjjdddgdgdd| _ d S t	 
  d S )	NZsalesuP   Неправильный вид деятельности для компанииT)abortr   z==r   )r   r   Zcache_inmemory)ZactivityZis_null
is_changedr   r   	cmf_alertmodelsZCmfActivitygetr   _calc_activity)r!   )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_idz==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                sl   ddddddddd	d
dg}|  | j d}x*|D ]"}| | jr0|d| | j 7 }q0W ||d< t jf |S )NZcityZaddressZaddress_in_lawZinnZbank_accountZogrnr   r   r   r   Zwebsite_urlr    r   )load_fieldsZfull_search_fieldsvaluer   full_search_index)r!   r   Ztext_fieldsr   f)r   r   r   r/   ;   s    


zCmfCompany.full_search_indexc                sV   |    t j||}| jjrR| jjrRx*| jjD ]}|jjdkrBq0|	dg q0W |S )NZCLOSEDcompany)
_calc_servicedesk_allowr   saveZdealsr.   r   r#   statusZstatus_typeupdate)r!   r   r   ZresZdeal)r   r   r   r3   I   s    zCmfCompany.savec                s\   |  ddg x| jD ]}d |_|  qW x| jD ]}d |_|  q4W t j|| d S )Nzpersons.companyztasks.company)r-   r(   r1   r3   Ztasksr   delete)r!   r   r   personZtask)r   r   r   r6   S   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 )Nr7   u   Новый клиент-   r,   )r   typer   r   r.   
rpartitionisdigitint)r!   Znumr   r   r   
_calc_name`   s    zCmfCompany._calc_namec          	   C   s8   t jtjsg S ttjd}t| S Q R X d S )Nr)	ospathexistsconfigDEMO_IDS_FILEopenjsonloadsread)r   r0   r   r   r   r
   j   s    zCmfCompany.load_demo_datac          
   C   s\  t  H tjtjr(tjtjs,d S ttjd}t	
| }W d Q R X g }x|D ]}tt|dd  }||kr\|| xX|jdd|gdD ]B}t|tjr|j  |jrq|tjkr|jdd q|  qW q\W x4tjjd	d
dgd	gdD ]}d|_|jdd q W tdtjgd tt t tj W d Q R X W d Q R X d S )Nr?   :r   idIN)r   T)forcer   ZLIKEu   Демо-данные%)r   r   r   )Z	only_datar	   )Zevent_persons)!ZcmfutilZdisable_aclr@   rA   rB   rC   rD   isfilerE   rF   rG   rH   varsr%   splitappendlist
isinstanceZ
CmfProjectZ
is_defaultloadZCmfChatGroupr6   ZCmfDocumentr   r3   Zcmf_emit_eventgcurrent_user
contextlibsuppressFileNotFoundErrorremove)r   r0   ZidsZ_modelsZ_idZmodelobjdocr   r   r   r	   q   s0    



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
 x8tjj| t	j
 dD ]}|jd	d |jrn|  qnW d S )Nzsdesk-client:default)r   Zproject_role=membersrK   )r   un   Чтобы убрать доступ в Service Desk, нужно убрать связь в проектах: T)r"   )r1   r   )rL   )Zservicedesk_allowr#   r%   ZCmfProjectRoler&   ZCmfProjectRoleAssignrQ   r$   Z	CmfPersonrT   rU   r    r2   r3   )r!   Z
sdesk_roleZactive_sdesk_projectsr7   r   r   r   r2      s    
z"CmfCompany._calc_servicedesk_allow)NNN)__name__
__module____qualname__Z	api_allowr   Zapi_methodsclassmethodr   r    r'   r+   r/   r3   r6   r>   r
   r	   r2   __classcell__r   r   )r   r   r      s$   

r   )rV   Z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   