
    Y~h                     H    d dl Z d dlT d dlmZ  G d dej                  ZdS )    N)*)cmf_companyc                       e Zd ZdZej        j        g dz   Zedddd fd
            Z fdZ	 fdZ
ed fd		            Z fd
Z fdZ fdZd Zed             Ze eddd          d                         Zd Z fdZ xZS )
CmfCompanyT)clear_demo_dataload_demo_datasearch Nqueryfieldsfilterc                ^    dg dg dg}g d|d<    t                      j        ||||d|S )NOR)is_internal==N)r   r   F)nametextcodephone1phone2email1email2fields_filterr   )superr	   )clsr   r   r   argskwargs	__class__s         &./modules/person/models/cmf_company.pyr	   zCmfCompany.search   sd     '''(((

 #c"b"buww~vf
 
@F
 
 	
    c                 N    t                                                      ddgz   S )Nzdeals.status.status_typer   )r   save_preload_fieldsselfr   s    r    r#   zCmfCompany.save_preload_fields   s$    ww**,,0JM/ZZZr!   c                 0   | j         j        s| j         j        r\| j        sU| j         r"| j         j        dk    rt          dd           n*t          j                            g ddgd          | _         d S t                      
                                 d S )NsalesuP   Неправильный вид деятельности для компанииTabort)r   r   r'   r   )r   r   cache_inmemory)activityis_null
is_changedr   r   	cmf_alertmodelsCmfActivitygetr   _calc_activityr$   s    r    r2   zCmfCompany._calc_activity   s    =  	DM$< 	# = ~})W44!"t  }A  B  B  B  B$*$6$:$:BYBYBYcfbgx|$:$}$}DM     r!   c                     |dk    r.|sg }|r(|r&|                     d          du r|dd|gdg dg dgg}|d	k    r|sg }|dd|gg} t                      j        |f|||d
|S )Npersonsr   F
company_idr   r   )
user_localr   F)r6   r   Nmain_contact)object_fieldsr   	object_id)r1   r   field_options_list)r   relation_field_namer8   r   r9   r   r   s         r    r:   zCmfCompany.field_options_list)   s    )++  Y Y}/@/@/O/OSX/X/X$%tY7:::<V<V<VWYF .00 |T9=>F)uww)l/<VW`l ldjl l 	lr!   c                     g d}|                      | j                   d}|D ]"}| |         j        r|d| |         j         z  }#||d<    t                      j        di |S )N)cityaddressaddress_in_lawinnbank_accountogrnr   r   r   r   website_urlr
    r    )load_fieldsfull_search_fieldsvaluer   full_search_index)r%   r   text_fieldsr   fr   s        r    rI   zCmfCompany.full_search_index;   s    : : : 	0111 	, 	,AAw} ,+DGM+++v(uww(226222r!   c                     |                                    t                      j        |i |}| j        j        rB| j        j        r6| j        j        D ])}|j        j        dk    r|	                    dg           *|S )NCLOSEDcompany)
_calc_servicedesk_allowr   savedealsrH   r   r-   statusstatus_typeupdate)r%   r   r   resdealr   s        r    rP   zCmfCompany.saveI   s    $$&&&egglD+F++: 	)	 4 	)
( ) );*h66YK((((
r!   c                     |                      ddg           | j        D ]}d |_        |                                 | j        D ]}d |_        |                                  t                      j        |i | d S )Nzpersons.companyztasks.company)rF   r4   rN   rP   tasksr   delete)r%   r   r   persontaskr   s        r    rY   zCmfCompany.deleteS   s    +_=>>>l 	 	F!FNKKMMMMJ 	 	DDLIIKKKK''''''r!   c                    | j         rd S | j        dk    ri| j        sdd| _         | j        j                            d          d         }|                                r&| xj         dt          |           z  c_         d S d S d S d S )NrZ   u   Новый клиент-   rD   )r   typer   r   rH   
rpartitionisdigitint)r%   nums     r    
_calc_namezCmfCompany._calc_name`   s    9 	F9  )9 1DI)/,,S11!4C{{}} ,		^S^^+				 !   , ,r!   c                    t           j                            t          j                  sg S t          t          j        d          5 }t                              |                                          cd d d            S # 1 swxY w Y   d S )Nr)	ospathexistsconfigDEMO_IDS_FILEopenjsonloadsread)r   rK   s     r    r   zCmfCompany.load_demo_dataj   s    w~~f233 	I&&,, 	(::affhh''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   ,A??BBu&   Удаление демо-данных)	only_oncedescriptionshow_bg_progressbarc                  .   t                                           5  t          j                            t
          j                  r)t          j                            t
          j                  s	 d d d            d S t          t
          j        d          5 } t          
                    |                                           }d d d            n# 1 swxY w Y   g }|D ]}t          t                    |                    d          d                  }||vr|                    |           |                    dd|g          D ]}t#          |t          j                  r!|j                                         |j        r=|t          j        t          j        fv r|                    d           n|                                 t          j                            g d	d
g          D ]}d|_        |                    d            t7          dt8          j        g           t=          j        t@                    5  t          !                    t
          j                   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrf   :r   idINr   Tforce)r   LIKEu   Демо-данные%r   )r   r   r
   )	only_datar   )event_persons)"cmfutildisable_aclrg   rh   ri   rj   rk   isfilerl   rm   rn   ro   varsr/   splitappendlist
isinstance
CmfProject
is_defaultloadCmfChatGroupCmfListrY   CmfDocumentr   rP   cmf_emit_eventgcurrent_user
contextlibsuppressFileNotFoundErrorremove)rK   ids_models_idmodelobjdocs          r    r   zCmfCompany.clear_demo_dataq   s      "" 	0 	07>>&"677 rw~~fNb?c?c 	0 	0 	0 	0 	0 	0 	0 	0 f*C00 +Ajj**+ + + + + + + + + + + + + + +G ) )VSYYs^^A%67''NN5)))$zz$c1BzCC 	) 	)%c6+<== )N//111"~ ) ( V%8&.$IIIJJTJ2222JJLLLL)..6`6`6`jpiq.rr ) )4((((,Q^<LMMMM$%677 0 0		&.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 03	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sa   AJ
;J
-CJ
C	J
C	E+J
%I2&J
2I6	6J
9I6	:J

JJc                    | j         j        sd S | j         s_t          j                            d          }t          j                            dd|gdd| ggg          }|rt          d| d	
           t          j                            | t          j
                                                  D ]3}|                    d	           |j        r|                                 4d S )Nzsdesk-client:default)r   project_role=membersrv   rw   un   Чтобы убрать доступ в Service Desk, нужно убрать связь в проектах: Tr(   )rN   r   rx   )servicedesk_allowr-   r/   CmfProjectRoler1   CmfProjectRoleAssignr   r.   	CmfPersonr   r   r#   rO   rP   )r%   
sdesk_roleactive_sdesk_projectsrZ   s       r    rO   z"CmfCompany._calc_servicedesk_allow   s#   %0 	F% 	&.228N2OOJ$*$?$D$Dn^acmMnNWY]`d_eMfMh$D %i %i!$ &  c  La  c  c $& & & & &++DAcAcAeAe+ff 	 	F***666  	 	r!   c                     t           j        }| j        r t                                                      S |                    d          rdS t                                          d          S )NContactAdmins)
group_codeTut    Либо нужно быть членом группы "Редакторы Компаний и Контактов".)additional_error_msg)r   r   r   r   check_edit_permin_person_group)r%   r   r   s     r    r   zCmfCompany.check_edit_perm   sq    ~ 	-77**,,,''?'CC 	4ww&&  =s&  t  t  	tr!   )NNN)__name__
__module____qualname__	api_allowr   r   api_methodsclassmethodr	   r#   r2   r:   rI   rP   rY   rd   r   staticmethodcmf_deferred_jobr   rO   r   __classcell__)r   s   @r    r   r      s       I(4 8
 8
 8
 
K !#D 	
 	
 	
 	
 	
 	
 [	
[ [ [ [ [
! 
! 
! 
! 
! l l l l l [l"3 3 3 3 3    ( ( ( ( (, , , ( ( [( 2Zptuuu0 0 vu \0<  $
t 
t 
t 
t 
t 
t 
t 
t 
tr!   r   )r   cmf.includemodules.person.fieldsr   r   rE   r!   r    <module>r      sz            - - - - - -gt gt gt gt gt' gt gt gt gt gtr!   