U
    d?we¡  ã                   @   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	‡ 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ÚcodeÚphone1Úphone2Úemail1Ú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                    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   r   r   )r   r   Zcache_inmemory)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                    sh   ddddddddd	d
dg}|   | j¡ d}|D ]"}| | jr.|d| | j› 7 }q.||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   Úfr   r   r    r2   3   s      ÿ
zCmfCompany.full_search_indexc                    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dealsr1   r   r&   ÚstatusZstatus_typeÚupdate)r#   r   r   ÚresZdealr   r   r    r6   A   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)r0   r+   r4   r6   Ztasksr   Údelete)r#   r   r   ÚpersonZtaskr   r   r    r:   K   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 )Nr;   u   ÐÐ¾Ð²Ñ‹Ð¹ ÐºÐ»Ð¸ÐµÐ½Ñ‚ú-é   r/   )r   Útyper   r   r1   Ú
rpartitionÚisdigitÚint)r#   Znumr   r   r    Ú
_calc_nameX   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   r3   r   r   r    Úload_demo_datab   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rÄq¢|tjkrÜ|jdd q¢| ¡  q¢qdt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 )NrC   ú:r   ÚidÚIN©r   T©Úforcer   ZLIKEu   Ð”ÐµÐ¼Ð¾-Ð´Ð°Ð½Ð½Ñ‹Ðµ%)r   r   r	   )Z	only_dataÚclear_demo_data)Zevent_persons)ZcmfutilZdisable_aclrD   rE   rF   rG   rH   ÚisfilerI   rJ   rK   rL   Úvarsr(   ÚsplitÚappendÚlistÚ
isinstanceZ
CmfProjectZ
is_defaultÚloadZCmfChatGroupr:   ZCmfDocumentr   r6   Zcmf_emit_eventÚgÚcurrent_userÚremove)r   r3   ZidsZ_modelsZ_idZmodelÚobjÚdocr   r   r    rT   i   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ú=ÚmembersrP   rQ   un   Ð§Ñ‚Ð¾Ð±Ñ‹ ÑƒÐ±Ñ€Ð°Ñ‚ÑŒ Ð´Ð¾ÑÑ‚ÑƒÐ¿ Ð² Service Desk, Ð½ÑƒÐ¶Ð½Ð¾ ÑƒÐ±Ñ€Ð°Ñ‚ÑŒ ÑÐ²ÑÐ·ÑŒ Ð² Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ñ…: Tr$   )r4   r   rR   )Zservicedesk_allowr&   r(   ZCmfProjectRoler)   ZCmfProjectRoleAssignrY   r'   Z	CmfPersonr\   r]   r!   r5   r6   )r#   Z
sdesk_roleZactive_sdesk_projectsr;   r   r   r    r5   ‡   s    
ÿ
ÿz"CmfCompany._calc_servicedesk_allow)NNN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r!   r*   r.   r2   r6   r:   rB   rM   rT   r5   Ú__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   