U
    hVcL                     @   s   d Z ddlZddlZddlZddlmZ ddlZddlmZ ddlm	Z	 e	j
 dZdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd.d d!Zd/d"d#Zd0d$d%Zd&d' Zd1d(d)Zd*d+ Zd,d- ZdS )2u   
!!! Делаем идемпотентные инициализации:
    можно запускать много раз на Рабочей БД с ожидаемым результатом.
    N)deepcopy)tqdm)configz/contrib/system_data.jsonc               
   C   s.   t t} t|  W  5 Q R  S Q R X d S )N)openSYSTEM_DATA_PATHjsonloadsread)fd r   ./system_data.pyget_data   s    
r   c              	   C   sB   ddl m} |jjdd}|r"|S |jdddd| | | djddS )	Nr   modelszanonymous@evateam.rucodeZ	anonymousTloginnamer   system	cmf_owner
cmf_authorcmf_modified_byZ	only_data)cmf.includer   	CmfPersongetsave)system_personr   Zanonr   r   r   create_anonymous_user   s         r   c              	   C   s,   ddl m} |jdddd| | | djddS )Nr   r   zsharelink-anonymous@evateam.ruzsharelink-anonymousTr   r   )r   r   r   r   )r   r   r   r   r   create_sharelink_anonymous_user"   s         r    c              
   C   sL   ddl m} |jdddd| | | dd}|j }|j| |jdd |S )	Nr   r   ztest-guest@evateam.ruz
test-guestTF)r   r   r   r   r   r   r   
user_localr   )r   r   r   CmfPersonGroupZguest_groupZrg_member_ofappendr   )r   r   personZguest_person_groupr   r   r   create_test_guest_user*   s         
r%   c                  C   s2   ddl m}  | jjdds.| jdddd  d S )Nr   r   globalr   u#   Глобальные правилаT)r   r   r   )r   r   ZCmfAccessListr   r   r   r   r   r   init_acl9   s    r'   c                  C   s0   ddl m} m} | j s,| j|jd  d S Nr   r   g)r   )r   r   r*   ZCmfGlobalSettingsr   r   r   r)   r   r   r   init_global_settings>   s    
r+   c                  C   s0   ddl m} m} | j s,| j|jd  d S r(   )r   r   r*   ZCmfGlobalVarr   r   r   r)   r   r   r   init_global_varD   s    
r,   c               	   C   sB  ddl m}  tj }| j }|sH| jdddd||dd}|jdd t| | jj	d	d
dgd}|s| jdddddd  | jj	d	d
dgd}|s| jdddddd  | jj	d	d
dgd}|s| jddddd  | jj	d	d
dgd}|s| jddddd  | jj	d	d
dgd}|s>| jddddd  d S )Nr   r   z.CmfPerson:00000000-0000-0000-0000-000000000001Tu   СистемаuK   Это не реальный человек, это сама система)idr   r   textcmf_created_atZcmf_modified_atr!   r   r   ==ZAdminsfilterz3CmfPersonGroup:00000000-0000-0000-0000-000000000013u   Администраторы)r-   r   r   r.   r   Usersz3CmfPersonGroup:00000000-0000-0000-0000-000000000028u   ПользователиZSupportu1   Техническая поддержка Evateam)r   r   r.   r   ZGuestuJ   Зарегистрированные пользователи (гости)Z	ShareLinku-   Группа доступа по ссылке)
r   r   datetimenowr   r   r   r   r"   r   )r   r5   r   Zadmins_groupZusers_groupZsupport_grpgrpr   r   r   init_system_usersJ   sf    

	  


 
 r7   c                  C   s  ddl m} m}m} |  dtjd< t  t  t	  t
  | jj  t dkrtjdstdt  d td	 d S t  t  t  t  t  t  t  t  | jd
ddddd  | jddddddd  | jdddd}| j }|j | |  | j!ddddd}|  | j"|d|j#d}|  | j!ddddd }|  | j$|d|j#d}|  | jj  d S )!Nr   )r   	CMF_CACHEcmfutil1ZNO_CACHEz/opt/crmZ
run_pytestz"Only CRM need a system data init, z	 skipped.z3If you thing it's wrong contact skype://carbon.olegz,CmfUnit:00000000-0000-0000-0000-000000000029Tu
   Штукиu   штZ796)r-   r   r   
short_namer   z0CmfCurrency:00000000-0000-0000-0000-000000000030u
   рублиu   рубZ643)r-   r   r   r;   r   mainu   Общий чатr3   )r   r   r   Zmailu,   Локальный почтовый ящикzsmtp-sender.local.evacrm.ru:25)typer   Zext_smtpr   )pluginr   r   Zsmsgateu"   Локальный СМС шлюзzZhttp://smsgate.carbonsoft.ru/?login=000-000-000-000-001&pass=empty&tel={phone}&text={text})r=   r   Zext_urlr   )%r   r   r8   r9   Zflushallosenvironr7   r'   r+   r,   r   ZdpZcommitgetcwdr   printscaffold_licensescaffold_activitiesscaffold_tag_categoryscaffold_tagsscaffold_workflowscaffold_logic_typescaffold_scheme_wfscaffold_menu_tree_itemZCmfUnitr   ZCmfCurrencyZCmfChatGroupr"   Z
user_groupZ	executorsr#   Z	CmfPluginZCmfPluginMailBoxr   ZCmfPluginSMSGate)r   r8   r9   ZchatZuser_grpr>   Zmail_boxZsms_gater   r   r   init_system_datay   sj    




rK   c                  C   s   ddl m}  t d }|D ]j}|d }|d }|d }| jjdd|ggdd	}|sZ|  }||_||_d|_|jdd
 t	||d qd S )Nr   r   workflowr   r   statusesr0   T)r2   include_deletedr   )rL   
status_key)
r   r   r   CmfWorkflowr   r   r   r   r   create_status)r   Zworkflow_data_listZworkflow_datar   r   rM   rL   r   r   r   rG      s$    
rG   c               	   C   s   ddl m}  t d }| D ]d\}}| jjddd|gdd|d ggdd	gd
}|s`|  }|d |_||_d|_|j	dd qd S )Nr   r   Z
activitiesORr   r0   ZoldcodeTr/   r2   rN   order_byr   r   )
r   r   r   itemsCmfActivityr   r   r   r   r   )r   datar   Zactivity_dataactivityr   r   r   rD      s"    
   
rD   c                  C   s~   ddl m}  t }|d }|D ]Z}| jjdd|d gddgd}|sL|  }|d	 |_|d |_d
|_d|_|j	dd qd S )Nr   r   licenser   r0   Tr/   rS   r   Zdemoclosedr   )
r   r   r   Z
CmfLicenser   r   r   statusZonboarding_statusr   )r   rW   Zall_licenseZlicense_datarY   r   r   r   rC      s      

rC   Fc              	   C   sX  ddl m} t }|d }|D ]2}|jjddd|d gdd|dggd	d
gd}|sf| r^q| }|d |_|dd|_|dd |_|dd|_d|kr|d |_	|dr|j
  |j
jst |j
_|j
j|d  tt|j
|_
|jj|d d|_|d |_|jd	d d|kr|jjdd|d ggd}||_|jd	d qd S )Nr   r   Z
logic_typerR   r   ILIKE=oldnameTr/   rS   r   Fobj_code_prefixui_color#3f82d8r   aliasrX   r   cmf_model_namer   default_workflowr1   )r   r   r   ZCmfLogicTyper   r   r   r_   r`   r   rb   loadvaluelistextendsetrV   Zfilter_activityrc   r   rP   rd   )only_updater   rW   Zall_ltZlt_dataltZwfr   r   r   rH      sJ    
 





rH   c                 C   s   ddl m} t }|d }|D ]}t|| d q|d d }|jjdddgdD ]L}|jd	kr`qP|j d
}||d< d|j |d< |jj	|d< t|| d qPd S )Nr   r   Z	scheme_wf)rj   r   r]   Tr1   Zsoftdevz:defaultr   u   Системная r   rX   )
r   r   r   _create_scheme_wf_from_jsonrV   rg   r   r   r-   rf   )rj   r   rW   Zall_swsw_dataZbase_scheme_wf_datarX   r   r   r   r   rI   !  s    
rI   c                 C   s   ddl m} |jjddd| d gdd| d ggddgd	}|sN|rFd S | }| d |_| d |_| d
 |_| d |_| d |_| d |_	| d |_
| d |_| d |_| d |_| d |_| d |_d|_|jdd d S )Nr   r   rR   r   r]   r   Tr/   rS   default_task_workflowdefault_list_workflowdefault_epic_workflowdefault_release_workflowdefault_version_workflowdefault_sprint_workflowdefault_document_workflowdefault_subtask_workflowdefault_task_logic_typerX   r   )r   r   ZCmfSchemeWfr   r   r   rn   ro   rp   rq   rr   rs   rt   ru   rv   rX   r   r   )rm   rj   r   swr   r   r   rl   4  s4     











rl   c                  C   s   ddl m}  t }|d }|D ]d}| jjdd|d gddgd}|sL|  }|d |_d	|krh|d	 |_|d
d|_|jdd qd S )Nr   r   tag_categoryr   r0   Tr/   rS   r   single_choiceFr   )	r   r   r   CmfTagCategoryr   r   r   ry   r   )r   rW   Zall_tag_categoriesZcat_datacatr   r   r   rE   Q  s      

rE   c           
   	   C   s  ddl m} t }|d }|D ]}|jjddd|d gdd|dggd	d
gd}|s|dr|dd k	r|jjd	d
gd}|dD ]P}|r q|D ]>}| |jj ks|j	r| dd |j	D kr|} qqq|s| rq| }|d |_|dd|_
d|kr|d |_d }	|drX|jj|d d}	|	sX|j|d d }	|	|_|dr|j	js~t |j	_|j	j|d  tt|j	|_	|jj|d d|_|jd	d qd S )Nr   r   tagsrR   r   r\   r]   r^   Tr/   rS   rb   )rN   rT   c                 S   s   g | ]}|  qS r   )casefold).0xr   r   r   
<listcomp>v  s     z!scaffold_tags.<locals>.<listcomp>colorra   r   rx   )r   rX   r   )Znochecksyname)r   r   r   ZCmfTagr   rg   r}   r   rf   rb   r   r   rz   r   rx   rh   ri   rV   rX   )
rj   r   rW   Zall_tagsZtag_datatagr|   Zaltrx   r   r   r   rF   d  s^    
 




rF   c                 C   s:  ddl m} t }|d | d }d}| D ]\}}|d7 }|jjdd| gdd|d ggdd	gd
}|s|jjdd|d gddd ggdgd}|s| }||_|d |_|d |_|d |_	|dd|_
|d|_||_|d|_| |_d| jjkr
d|_nd|_t|j|jj|j|j |jdd q.d S )Nr   r   rM     rL   r0   r   Tr/   rS   )r2   Zfieldsstatus_typer.   r   z#666
next_alarm	card_namez.systemFr   )r   r   r   rU   Z	CmfStatusr   ordernor   r   r.   r   r   r   r   rL   rf   r   rB   r   )rL   rO   r   rW   Zstatuses_dataZorder_noZstatus_datar[   r   r   r   rQ     sR     


rQ   c                  C   s  ddl m}  | jjdd}|s*| jdd}| j}d|_|j d|_|j |_	|j
 |_|j d|_d|_d|_|jp||j|_|  | jjd	d}|s| jd	d}| j}d|_|j d|_|j |_	|j
 |_|j d|_d|_d|_|jp|j|_|  dS )
uj   
    Создаёт в MenuTreeItem пункты меню дерева
    Идемпотентная
    r   r   z
MNU-000001r   r   z:ClassNzCmfSaleMenuGroup:Classz
MNU-000002)r   r   ZCmfMenuTreeItemr   Z
CmfCompanyr   
class_nameZ	obj_id_idZui_nameZobj_ui_nameZ	ui_moduleZob_ui_moduleZobj_codeZ
obj_parentZtree_parent_idZverbose_name_pluralZverbose_namer   r   r   )r   ZcompanyZcompany_classr$   Zperson_classr   r   r   rJ     s>    



rJ   )F)F)F)F)__doc__r4   r   r?   copyr   Zyamlr   Zcmfr   Z
CMF_FOLDERr   r   r   r    r%   r'   r+   r,   r7   rK   rG   rD   rC   rH   rI   rl   rE   rF   rQ   rJ   r   r   r   r   <module>   s6   /J
'


/-