U
    Œ+=di  ã                   @   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‡ 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,   |   dg¡ | jr(tƒ jf d|i|—Ž d S )Nr   r   )Úload_fieldsr   r   Úall_place_notify)Úselfr   r   r   r   r   r      s    zCmfCompany.all_place_notifyc                    s   t ƒ  ¡ ddg S )Nzdeals.status.status_typer   )r   Úsave_preload_fields©r   r   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   r0   8   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)r   r*   r.   r0   Ztasksr   Údelete)r   r   r   ÚpersonZtaskr   r   r   r5   B   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 )Nr6   u   ÐÐ¾Ð²Ñ‹Ð¹ ÐºÐ»Ð¸ÐµÐ½Ñ‚ú-é   ú )r   Útyper   r   r1   Ú
rpartitionÚisdigitÚint)r   Znumr   r   r   Ú
_calc_nameO   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_dataY   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 )Nr?   ú:r   ÚidÚIN©r   T©Úforcer   ZLIKEu   Ð”ÐµÐ¼Ð¾-Ð´Ð°Ð½Ð½Ñ‹Ðµ%r$   r	   )Z	only_dataÚclear_demo_data)Zevent_persons)ZcmfutilZdisable_aclr@   rA   rB   rC   rD   ÚisfilerE   rF   rG   rH   Úvarsr'   ÚsplitÚappendÚlistÚ
isinstanceZ
CmfProjectZ
is_defaultÚloadZCmfChatGroupr5   ZCmfDocumentr   r0   Zcmf_emit_eventÚgÚcurrent_userÚremove)r   rI   ZidsZ_modelsZ_idZmodelÚobjÚdocr   r   r   rQ   `   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ú=ÚmembersrM   rN   un   Ð§Ñ‚Ð¾Ð±Ñ‹ ÑƒÐ±Ñ€Ð°Ñ‚ÑŒ Ð´Ð¾ÑÑ‚ÑƒÐ¿ Ð² Service Desk, Ð½ÑƒÐ¶Ð½Ð¾ ÑƒÐ±Ñ€Ð°Ñ‚ÑŒ ÑÐ²ÑÐ·ÑŒ Ð² Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ñ…: Tr"   )r.   r   rO   )Zservicedesk_allowr%   r'   ZCmfProjectRoler(   ZCmfProjectRoleAssignrV   r&   Z	CmfPersonrY   rZ   r    r/   r0   )r   Z
sdesk_roleZactive_sdesk_projectsr6   r   r   r   r/   ~   s    
ÿ
ÿz"CmfCompany._calc_servicedesk_allow)NNN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r    r)   r-   r0   r5   r>   rJ   rQ   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   