
    oi)                       d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 e	j                   dZd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd8dZd8dZd8dZd8dZd Zd8dZd Z d Z!d9dZ"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<y):u   
!!! Делаем идемпотентные инициализации:
    можно запускать много раз на Рабочей БД с ожидаемым результатом.
    N)Any)g)configz/contrib/system_data.jsonc                      t        t              5 } t        j                  | j	                               cd d d        S # 1 sw Y   y xY wN)openSYSTEM_DATA_PATHjsonloadsread)fds    ./cmf/system_data.pyget_datar      s4    		 %2zz"'')$% % %s	   #=Ac           	          ddl m} |j                  j                  d      }|r|S |j                  dddd| | |       j	                  d      S )	Nr   modelszanonymous@evateam.rucode	anonymousTloginnamer   system	cmf_owner
cmf_authorcmf_modified_by	only_data)cmf.includer   	CmfPersongetsave)system_personr   anons      r   create_anonymous_userr%      s_    "%;<D$;=S}Xe   dTd    c           	      ^    ddl m} |j                  dddd| | |       j                  d      S )Nr   r   zsharelink-anonymous@evateam.ruzsharelink-anonymousTr   r   )r   r   r    r"   )r#   r   s     r   create_sharelink_anonymous_userr(   !   s>    ".5JQq}Xe   dTdr&   c           
          ddl m} |j                  dddd| | | d      }|j                  j	                         }|j
                  j                  |       |j                  d       |S )	Nr   r   ztest-guest@evateam.ruz
test-guestTF)r   r   r   r   r   r   r   
user_localr   )r   r   r    CmfPersonGroupguest_grouprg_member_ofappendr"   )r#   r   personguest_person_groups       r   create_test_guest_userr1   )   sp     #%L?V}Xe  F
  ..::<
12
KK$KMr&   c                      ddl m}  | j                  j                  d      s%| j                  ddd      j	                  d	       y y )
Nr   r   globalr   u#   Глобальные правилаTr   r   r   Fnotify)r   r   CmfAccessListr!   r"   r   s    r   init_aclr8   8   sG    "###2(1V_cdiiqviw 3r&   c                      ddl m} m} | j                  j	                         s.| j                  d|j
                        j                  d       y y )Nr   r   r   z6CmfGlobalSettings:00000000-0000-0000-0000-000000000001)idr   Fr5   )r   r   r   CmfGlobalSettingsr!   r#   r"   r:   s     r   init_global_settingsr=   >   sK    %##'')  GSTSbSb 	! 	ddhdhpudhdv *r&   c                      ddl m} m} | j                  j	                         s+| j                  |j
                        j                          y y )Nr   r:   )r   )r   r   r   CmfGlobalVarr!   r#   r"   r:   s     r   init_global_varr@   F   s:    %""$aoo6;;= %r&   c                     ddl m}  t        j                  j                         }| j                  j                         }|s+| j	                  dddd||d      }|j                  dd	       |t        _        t        |       | j                  j                  g d
      }|s&| j                  ddddd      j                  d       | j                  j                  g d      }|s&| j                  ddddd      j                  d       | j                  j                  g d      }|s%| j                  dddd      j                  d      }| j                  j                  g d      }|s%| j                  dddd      j                  d      }| j                  j                  g d      }|s%| j                  dddd      j                  d      }|j                  j                          ||j                  vr-|j                  j                  |       |j                  d       | j                  j                  g d       }|s%| j                  dd!d!d"      j                  d       | j                  j                  g d#      }	|	s%| j                  dd$d$d%      j                  d       | j                  j                  g d&      }
|
s%| j                  dd'd'd(      j                  d       | j                  j                  g d)      }
|
s%| j                  dd*d*d+      j                  d       | j                  j                  g d,      }
|
s%| j                  dd-d-d.      j                  d       | j                  j                  d/d0      }
|
s$| j                  d/dd12      j                  d       | j                  j                  d3d0      }
|
s$| j                  d3dd42      j                  d       | j                  j                  d5d0      }
|
s[| j                  d5dd62      }
|
j                  d       | j                  j                  g d
      |
_        |
j                  d       | j                  j                  d7d0      }
|
s[| j                  d7dd82      }
|
j                  d       | j                  j                  g d
      |
_        |
j                  d       g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGfD ]  \  }}}| j                  j                  dHdI|g      }|s!|r| j                  j                  dHdI|g      }|s| j	                  |J      }||_        d|_        d|_        ||_        dK|_        |j                  dd	        y )LNr   r   z.CmfPerson:00000000-0000-0000-0000-000000000001Tu   СистемаuK   Это не реальный человек, это сама система)r;   r   r   textcmf_created_atcmf_modified_atr*   F)r   r6   )r   ==Adminsfilterz3CmfPersonGroup:00000000-0000-0000-0000-000000000013rF   u   Администраторы)r;   r   r   rB   r   r5   )r   rE   Usersz3CmfPersonGroup:00000000-0000-0000-0000-000000000028u   ПользователиrI   )r   rE   ProjectCreatorsu#   Создатели проектовrJ   )r   r   rB   r   )r   rE   ProjectAdminsu-   Администраторы проектовrK   )r   rE   ContactAdminsu9   Редакторы Компаний и КонтактовrL   r   )r   rE   IBAdminsu5   Администраторы безопасностиrM   )r   rE   Supportu1   Техническая поддержка EvateamrN   )r   rE   GuestuJ   Зарегистрированные пользователи (гости)rO   )r   rE   	ShareLinku-   Группа доступа по ссылкеrP   )r   rE   ServiceDeskClientu*   Группа клиентов Service DeskrQ   AllowInvite)r   r   up   Группа которой разрешено приглашать пользователей в систему)r   r   r   Curatorsu   КураторыSuAvailableuv   Группа которой разрешено переключаться на других пользователей	SuExcludeuZ   Пользователи на которых запрещено переключаться)var:responsibleu   var:ИсполнительvarResponsible)var:executorsu   var:СоисполнителиvarExecutors)var:spectatorsu   var:НаблюдателиvarSpectators)	var:owneru   var:ВладелецvarOwner)zvar:owner_assistantsu-   var:Заместители владельцаN)zvar:project_owneru#   var:Владелец проектаvarProjectOwner)zvar:project_owner_assistantsu<   var:Заместители владельца проектаvarProjectOwnerAssistants)z
var:authoru   var:Автор	varAuthor)var:waiting_foru   var:Ждем ответаvarWaitingFor)zvar:component_owneru1   var:Руководитель компонентаvarComponentOwner)zvar:current_useru+   var:Текущий пользовательvarCurrentUser)zvar:all_related_usersu6   var:Все связанные пользователиvarAllRelatedUsers)zvar:followersu   var:Подпискиzvar:follower)zvar:project_usersu,   var:Все участники проектаN)zvar:approversu   var:УтверждающиеNr   rE   r   uM   Шаблонный пользователь для автоматизации)r   r   datetimenowr    r#   r"   r   _current_personr%   r+   r!   
rg_membersloadr.   listr   
cmf_hiddenr   r   rB   )r   rg   r#   admins_groupusers_groupproject_creators_groupproject_admin_groupcontact_admin_groupib_admins_groupsupport_grpgrpvar_user_codevar_user_namevar_user_old_codeusers                  r   init_system_usersry   L   sE   "





!C$$224M((?!^ ) 
 	T%8%A-(((,,4L,ML!V_c#+2PW_ 	 	aaeaemraeas''++3J+KKD++ 	 	
 $e$
#2266>_6`!!'!6!666"	 "7 "

 $e$
 	 !//33;Z3[$33@@ 	 4 

 $e$
 	 !//33;Z3[$33LL 	 4 

 $e$
 	 ""'')%8%C%CC&&--.DE  4 0++//7Q/ROT0g#Z#- 	 	//3t5t/A''++3L+MKDD	 	 	

 $e$




#
#+B
#
CCT0|#ov} 	 	 @D  @D  LQ  @D  @R



#
#+F
#
GCT0_#RYd 	 	ffjfjrwfjfx



#
#+N
#
OCT0\#OVi 	 	kkokow|kok}



#
#t
#
DC=  Ew  	x  	}  	}  EJ  	}  	K



#
#D
#
AC:dASTYYafYg



#
#t
#
DC##t  KC#  D..33;S3T 


#
#T
#
BC##T  Ie#  f..33;S3T
 	LKI9WW 	F5Ii]qAS?> 09'8" ##FD-+H#I)##''>O/P'QD###7D!	!	c			D	/70r&   c                      ddl m}  t               }|d   }|D ]L  }| j                  j	                  |d   d      }|r&| j                  |d         }|j                  d       N y )	Nr   r   client_jobsr   Tr   include_deletedr   r   )r   r   r   CmfClientJobr!   r"   )r   dataall_cjcj_datacjs        r   init_client_jobsr      sq    ":D- F $  $$'&/4$P$$'&/$:BGGdG#	$
 r&   c                      ddl m}  t               }|d   }|D ]L  }| j                  j	                  |d   d      }|r&| j                  |d         }|j                  d       N y )	Nr   r   business_sectorsr   Tr|   r~   r   )r   r   r   CmfBusinessSectorr!   r"   )r   r   all_bsbs_databss        r   init_business_sectorsr      ss    ":D$%F $%%))wvPT)U))wv)?BGGdG#	$
 r&   c                  L   ddl m} m}m} |j	                          dt
        j                  d<   t                t                t                t                t        j                         dk7  rpt
        j                  j                  d      sQt        dt        j                          d       t        d	       | j                  j                  j!                          y t#                t%                t'                t)                t+                t-                t/                t1                t3                t5                t7                t9                t;                t=                t?                tA                tC                tE                tG                tI                tK                tM                tO                tQ                tS                tU                tW                tY                t[                | j]                  d
dddd      j_                          | ja                  dddddd      j_                          | jc                  ddd      }| jd                  jg                         }|jh                  jk                  |       |j_                          | jm                  ddddd      }|j_                          | jo                  dddd       }|j_                          | jq                  |d|jr                         }|j_                          | jm                  d!d"d#d$      }|j_                          | ju                  |d|jr                         }|j_                          tw                ty                | j                  j                  j!                          y )%Nr   )r   	CMF_CACHEcmfutil1NO_CACHEz/opt/eva-app
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   шт796)r;   r   r   
short_namer   z0CmfCurrency:00000000-0000-0000-0000-000000000030u
   рублиu   руб643)r;   r   r   r   r   mainu   Общий чатrI   r   r   r   mailu,   Локальный почтовый ящикzsmtp-sender.local.evacrm.ru:25F)typer   ext_smtpr   
verify_sslfilter_is_noneu   Без списка)r   r   r   parent)pluginr   r   smsgateu"   Локальный СМС шлюзzZhttp://smsgate.carbonsoft.ru/?login=000-000-000-000-001&pass=empty&tel={phone}&text={text})r   r   ext_urlr   )=r   r   r   r   flushdbosenvironry   r8   r=   r@   getcwdr!   printr    dpcommitr   r   scaffold_email_templatesscaffold_event_typescaffold_project_notify_schemescaffold_activitiesscaffold_tag_categoryscaffold_tagsscaffold_status_codesscaffold_workflowscaffold_logic_typescaffold_scheme_wfscaffold_relation_typescaffold_menu_tree_itemscaffold_filter_report_folderscaffold_project_rolescaffold_project_permscaffold_calendarscaffold_ui_formscaffold_security_levelsscaffold_task_filtersscaffold_html_schemesscaffold_assetsscaffold_task_resolution"scaffold_cust_field_config_schemesscaffold_maillistsscaffold_evagitscaffold_evagit_rolesscaffold_evagit_pluginCmfUnitr"   CmfCurrencyCmfChatGroupr+   
user_group	executorsr.   	CmfPluginCmfListCmfPluginMailBoxr   CmfPluginSMSGateinit_synonymsscaffold_company_portal)	r   r   r   chatuser_grpr   r   mail_boxsms_gates	            r   init_system_datar      s   66 BJJzJ	yy{n$RZZ^^L-I2299;-yIJCD""$  "$ O  !#          '(   NN9   df
=   df$7gdSD$$//1HNN(#IIK60^  jJ%)e  =F
KKM ^^46FMbko^pN&&fT&THMMO93W 'C%)  +F KKM&&fT&THMMO O
 r&   c            
         ddl m}  t               }|d   }t               }|D ]  }|d   |vs
J d|        |j	                  |d          | j
                  j                  ddd|d   gdd|j                  d	      ggd
dg      }|s| j                         }|d   |_        |d   |_        |d   |_	        d
|_
        |j                  dd       |_        |j                  d
        y )Nr   r   status_codesr   u0   Ошибка уникальности по code ORILIKE=oldcodeTrC   rH   r}   order_byr   status_typerB   r   )r   r   r   rk   r.   CmfStatusCoder!   r   r   r   r   rB   r"   )r   r   all_st	processedst_datasts         r   r   r   z  s   ":D.!FI  vi/m3cdkcl1mm/)!!%%dWgfo.S'++i01.
  +;*<	 & >
 %%'B&/&/ /	++fd+
$   r&   c                     ddl m}  t               d   }|D ]  }|d   }|d   }|d   }| j                  j	                  dd|ggd	      }|r6| j                         }||_        ||_        |j	                  d
d      |_        |j	                  dd      |_        d|_	        d|_
        |j                  d       t        ||       |j                           y )Nr   r   workflowr   r   statusesrE   TrH   r}   publish_approved_onlyFpublish_by_owner_onlyr   )r   
status_key)r   r   r   CmfWorkflowr!   r   r   r   r   sl_allow_quick_closing_tasksr   r"   create_statuscreate_create_trans)r   workflow_data_listworkflow_datar   r   r   r   s          r   r   r     s    "!J/+ 'V$V$ ,%%))T4 2
 * ! %%')6):):;RTY)Z&)6):):;RTY)Z&04-%xH=$$&''r&   c            
      B   ddl m}  t               d   }|j                         D ]y  \  }}| j                  j                  ddd|gdd|j                  d       ggdd	g
      }|s| j	                         }|d   |_        ||_        d|_        |j                  d       { y )Nr   r   
activitiesr   r   rE   r   TrC   r   r   r   )
r   r   r   itemsCmfActivityr!   r   r   r   r"   )r   r   r   activity_dataactivitys        r   r   r     s    ":l#D#zz| 	&m%%))64&-:K:KI:V9W(Y2
+;*< * > ))+H%f-%	&r&   c                    ddl m} t               }|d   }|D ]  }|j                  j	                  dd|d   gddg      }|r,|s|j                         }|d	   |_        d|_        |j	                  d
d       |_        |j	                  dd      |_        d|v r
|d   |_	        |j	                  d      r|j                  j                          |j                  j                  st               |j                  _        |j                  j                  j                  |d          t        t        |j                              |_
        |j                   j	                  |d         |_        |d   |_        d|v r+|j&                  j	                  dd|d   gg      }||_        nd |_        |j+                  d        y )Nr   r   
logic_typer   r   TrC   r   r   obj_code_prefixui_color#3f82d8aliasr   r   cmf_model_namedefault_workflowrG   r   )r   r   r   CmfLogicTyper!   r   r   r   r   r   r   rj   valuerk   extendsetr   filter_activityr   r   r   r"   )only_updater   r   all_ltlt_dataltwfs          r   r   r     s   ":D,F !   $$VS'&/,J+;*< % >  $$&B&/	$[[):DAkk*i8WfoBG;;wHHMMO88>>!%HHNN!!''"23CM*BH#//339L3M#$45(##''g&89:0' B #%B"&B
$C! D r&   c                 b   ddl m} t               }|d   }|D ]  }t        ||         |d   d   }|j                  j                  g d      D ]]  }|j                  dv r|j                   d}||d	<   d
|j                   |d<   |j                  j                  |d<   t        ||        _ y )Nr   r   	scheme_wf)r   r   r   TrG   )softdevservicedesk:defaultr   u   Системная r   r   )
r   r   r   _create_scheme_wf_from_jsonr   rk   r   r   r;   r   )r   r   r   all_swsw_database_scheme_wf_datar   r   s           r   r   r     s    ":D+F F#GEF {+A.&&++3H+I R==66--)&*F#(;HMM?&KF#*2++*;*;J'#$7[QR r&   c           	      &   ddl m} |j                  j                  g dddd| d   gdd| d   gggdd	g
      }|ry |j                         }| d   |_        | d   |_        | d   |_        | d   |_        | d   |_        | d   |_	        | d   |_
        | d   |_        | d   |_        | d   |_        | d   |_        | d   |_        | d   |_        | d   |_        d|_        |j'                  d       | j                  d      rt)        || d          y y )Nr   r   )r   rE   Tr   r   r   r   TrC   r   default_task_workflowdefault_list_workflowdefault_epic_workflowdefault_subproject_workflowdefault_release_workflowdefault_sprint_workflowdefault_document_workflowdefault_document_approve_wfdefault_subtask_workflowdefault_task_logic_typedefault_subtask_logic_typer   r   rules)r   r   CmfSchemeWfr!   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r"   _create_scheme_wf_rules)r  r   r   sws       r   r  r    s^   "					(>)--3S'&/,J-3S'&/,J)*(+
 (8'9 
  
;B 
				BfoBGfoBG&'>?B&'>?B&'>?B%,-J%KB"")*D"EB!()B!CB#*+F#GB %,-J%KB"")*D"EB!()B!CB$+,H$IB!*%BKBIGGdG{{7GG$45 r&   c           	      Z   ddl m} |D ]  }|j                  j                  |d         }|d   D ]w  }|j                  j                  |      }|j
                  j                  dd| gdd|gd	d|gg
      }|rJ| |||d   d}	 |j
                  di |	}|j                  d       y  y )Nr   r   r   r   logic_typesr  rE   target_workflowr   rG   r   )r  r!  r   r   Tr    )r   r   r   r!   r   CmfSchemeWfRuler"   )
r  r  r   r   ruler  r   r  scheme_wf_rule	rule_dicts
             r   r  r    s    " 4##j)9#:}- 	4J$$((j(9B#3377 $	2&b1!4, 8 N "!*')"$&*+;&<		 "8!7!7!D)!D##d#3'	44r&   c                  ,   ddl m}  t               }|d   }|D ]z  }| j                  j	                  dd|d   gddg      }|s| j                         }|d   |_        d	|v r
|d	   |_        |j	                  d
d      |_        |j                  d       | y )Nr   r   tag_categoryr   rE   TrC   r   r   single_choiceFr   )	r   r   r   CmfTagCategoryr!   r   r   r)  r"   )r   r   all_tag_categoriescat_datacats        r   r   r   7  s    ":Dn-& 
!##''hv>N/O8<HXGY ( [ '')CF#X'CH$LL%@4 
! r&   c           
      H   ddl m} t               }|d   }|D ]  }|j                  j	                  ddd|d   gdd|j	                  d      ggd	d
g      }|s|j	                  d      r|j	                  d      |j                  j                  d	d
g      }|j	                  d      D ]  }|r n|D ]  }|j                         |j                  j                  j                         k(  sF|j                  sE|j                         |j                  D 	cg c]  }	|	j                          c}	v s~|}   |s| r%|j                         }|d   |_        |j	                  dd      |_
        d|v r
|d   |_        d }
|j	                  d      rD|j                  j	                  |d         }
|
s#|j                  |d         j                         }
|
|_        |j	                  d      rz|j                  j                  st               |j                  _        |j                  j                  j                  |d          t        t!        |j                              |_	        |j"                  j	                  |d         |_        |j                  d	        y c c}	w )Nr   r   tagsr   r   r   r   oldnameTrC   r   r   )r}   r   colorr   r   r(  r~   r   r   )nochecksyname)r   r   r   CmfTagr!   rk   casefoldr   r   r   r1  r   r*  r"   r(  r   r   r   r   )r   r   r   all_tagstag_datatagr/  altxr(  s              r   r   r   J  s^   ":DF|H &%mm)/(6:J(K)/hll96M(N(* 15@P?Q	   S
 x||G,g1F1R==%%dFVEW%XDll7+ 	 AKKMQVV\\-B-B-DD !BKKMTUT[T[=\qajjl=\,\	 --/CF#LL)4	X'CH<<'!0044(>:R4SL%44(>:R4SXXZ'<< 99??"&&		IIOO""8G#45S^,CI))--8J3G-Ht$M&%N 3 >]s   Jc                 	   ddl m} i }i }t               }|d   |   d   }d|d   |   v r|d   |   d   }d}|j                         D ]  \  }}|dz  }|j                  j                  |d         }	|	sJ d|d           |j                  j                  d	d
| gdd
|	ggddg      }
|
s%|j                  j                  dd
|	gg dgd	g      }
|
s|j                         }
|j                  d      x}r||
_        n||
_        |	|
_        |d   |
_	        |j                  dd      |
_
        |j                  d      |
_        |j                  d      |
_        ||
_        |j                  d      |
_        | |
_        d| j                   j"                  v rd|
_        nd|
_        |j                  dd      |
_        t)        |
j                  |
j                  j                   |
j*                  |
j                   |
j                         |
j-                          |
j/                  d       |
j                  r|j                  dd      }|j0                  j                  |d|
      }|s|j1                         }||_        ||_        d|_        |
|_        |j                  d g       D ]<  }|j8                  j                  |      }|s"|j:                  j=                  |       > d|_        |j/                  d       d!|
i||
j                   <    g }|j                         D ]  \  }}g }|j                  d"      D ]  }|j=                  ||   d!           |j=                  ||j                  d#      |||j                  d$         d!   | |j                  d%d      |j                  d&      d'        |rt?        |      }|j                  d(      x}rI|j@                  D ]:  }|j                  s||j                      d!   }
||
_!        |
j/                  d       < |j                  d)      x}rI|j@                  D ]:  }|j                  s||j                      d!   }
||
_"        |
j/                  d       < |j                  d*      x}r=|j@                  D ]-  }||j                      d!   }
||
_#        |
j/                  d       / y y y )+Nr   r   r   transitions  r   r   u(   Не найден код статуса r   rE   status_codeTrC   r   )r   rE   N)rH   fieldsordernorB   r1  z#666
next_alarmneed_approve	card_namez.systemFallow_empty_transitionr   ag_required_signscustom)required_signsr   r      ag_approvers_codesstatusfrom
trans_typetotrans_sdesk_portal_allowtransition_filters)r   rL  rK  rM  r   rN  rO  trans_approvedtrans_rejectedtrans_updated)$r   r   r   r   r   r!   	CmfStatusr@  r>  rB   r1  rA  rB  r   rC  r   r   r   r   rD  r   r   _calc_status_coder"   CmfApproveGrouprG  min_approversr   r    	approversr.   create_transitionsstatus_fromrP  rQ  rR  )r   r   r   r   transitions_datar   statuses_dataorder_nostatus_datar>  rJ  data_order_norG  app_grapprover_codeapproverr<  	trans_key
trans_datastatuses_listrY  created_transitionstransitems                           r   r   r   y  s(   " H:D$Z0<MZ(44
+J7FH#0#6#6#8 M3
KD**..K4G.H\F{SYGZF[\\{!!%%x(D+..
  +;*< & >
 %%))k2(2 "l * $F %%'F'OOI66=6*FN%FN( "&)"w7'OOL9)oon= &??;7"+++ FM!FM(38PRV(W%NNOO  KK	
 	  "d# (__-@(KN++//- 0 F
 //1&FK"0F!!"F  FM!,1Er!J 6!++//]/C$$++H5	6 FMKK$K' "*6 2[M3^ K!1!7!7!9 	:%>>&1 	BK  +!6x!@A	B$..6!:>>$/0: (27QSX(Y",..1E"F
 	 0= (++,<==5=)) 0$$%dii0:F,1F)KK$K/	0
 (++,<==5=)) 0$$%dii0:F,1F)KK$K/	0
 (++O<<5<)) ,!$)),X6',$d+, =! r&   c           
         ddl m} i }| D ]9  }|j                  j                  dd|j                  d      gdd|j                  d      gd	d|j                  d	      ggd
dg      }|s|j                         }|j                  d      |_        |j                  d      |_        |j                  d      |_        |j                  d	      |_        d
|_        |j                  d
       |j                  d      }|r4|D ]$  }|j                  |j                  d	      |       & t        |       |||j                  d      <   < |S )Nr   r   rY  INrK  	status_torE   rM  r   TrC   r   r   r   rO  )r   
transitionrL  )r   r   CmfTransr!   r   rY  rj  r   r   r"   updatecreate_transition_filters)r<  r   resultrk  rf  trans_filters_datatrans_filters          r   rX  rX     sK   "F! 5
##D*.."89$
t 45z~~j9:,
  +;*<	 $ > OO%E>>&)
$..0"t,!~~j1

T
"'^^,@A 2 ##'^^J7$ $ 
 &&89/4z~~l+,558 Mr&   c           
         ddl m} | D ]  }|j                  j                  dd|j                  d      gdd|j                  d      gdd|j                  d      ggd      }|s|j                         }|j                  d      |_        |j                  d      |_        |j                  d      |_        |j                           y )	Nr   r   r   r   rk  r   Tr   )r   r   CmfTransFilterr!   r   rk  r   r"   )transition_filters_datar   trans_filter_datarq  s       r   rn  rn  "  s    "4 ,,00S"3"7"7
"CDs$5$9$9,$GHs$5$9$9,$GH
 ! 1 
 !002L 1 5 5j A"3"7"7"E"3"7"7"E!r&   c                  @   ddl m}  | j                  j                  d      }|s| j                  d      }| j                  }d|_        |j                   d|_        |j                   |_	        |j                   |_        |j                   d|_        d|_        d|_        |j                  xs |j                   |_        |j%                          | j                  j                  d	      }|s| j                  d	      }| j&                  }d|_        |j                   d|_        |j                   |_	        |j                   |_        |j                   d|_        d|_        d|_        |j                  xs |j                   |_        |j%                          y)
uj   
    Создаёт в MenuTreeItem пункты меню дерева
    Идемпотентная
    r   r   z
MNU-000001r   r=  z:ClassNzCmfSaleMenuGroup:Classz
MNU-000002)r   r   CmfMenuTreeItemr!   
CmfCompanyr@  
class_name	obj_id_idui_nameobj_ui_name	ui_moduleob_ui_moduleobj_code
obj_parenttree_parent_idverbose_name_pluralverbose_namer   r"   r    )r   companycompany_classr/   person_classs        r   r   r   7  s   
 #$$((l(;G(( ) 
 %%MGO(334F;G*223G+556G'2236:GG5G 44R8R8RGLLLN##''\':F'' ( 
 ##LFN&112&9F(001F)334F%0018FOF4F22Ol6O6OFK
KKMr&   c                  V   ddl m}  t               d   }|D ]  }| j                  j	                  dd|d   gd      }|s!t        d|d           | j                         }|d   |_        |d	   |_        |d
   |_        |d   |_	        |d   |_
        d|_        |j                           y )Nr   r   relation_typer   rE   Tr   zadd obj relation_type r   out_type_namein_type_name	type_auto)r   r   r   CmfRelationTyper!   r   r   r   r  r  choice_typer   r"   )r   relation_type_datadata_objr  s       r   r   r   b  s    "!O4& ..2264RXIY:Zlp2q*8F+;*<=>"224M%f-%f-&.&?#%-n%="$,[$9!#r&   c                     ddl m}  | j                  j                  j                  }ddddgg}| j
                  j                  |      }|D ]~  }| j                  j                  d|	      }|s$| j                  d||
      }|j                          g }ddg}| j                  j                  |      }|D ]'  }	|j                  |	j                  j                         ) |D ]+  }
|
|vs| j                  |
||
      }|j                          - | j                  j                  d|	      }|s$| j                  d||
      }|j                          g }| j                  j                  |      }|D ]  }|j                  |j                          |D ]2  }
||
   |vs| j                  ||
   |||
      }|j                          4  y)u   
    Добавляет во все проекты с logic_type = ['project.base', 'project.agile']
    папки: Фильтры, Отчеты
    r   r   logic_prefixri  zproject.basezproject.agilerG   u   Фильтрыr   r   )r   r   tree_parentu   Фильтр 1u   Фильтр 2)r  u   Отчеты)r   r   r  report_typeN)r   r   CmfTaskReportr  choices
CmfProjectrk   	CmfFolderr!   r"   CmfBqlFilterr.   r   r   )r   r  	filter_ltprojectsprojectfilter_folderfoundedaddedfiltersfrg  
new_filterreport_folderreportsreport
new_reports                   r   r   r   t  s    #&&22::K 	~?I   %%Y%7H 2"((,,2B7,S",,%# - M
   !#34%%**}*E 	)ANN166<<(	)  	"D7"#00" - 1 

 !	" ((,,.,Q",,## - M
   &&+++F 	(FNN6;;'	(   		"D4 /#11$T*" - $	 2 
 !		"S2"r&   c                       y r   r"  r"  r&   r   scaffold_task_filterr        r&   c                       y r   r"  r"  r&   r   scaffold_task_reportr    r  r&   c            
         ddl m}  t               d   }d}|D ]  }| j                  j	                  dd|d   gd      }|s!t        d	|d           | j                         }|d   |_        |d
   |_        |d   |_        |d   |_	        ||_
        |dz  }d|_        |j                  d        t               d   }|D ]  }| j                  j	                  dd|d   gd      }|s!t        d|d           | j                         }|d   |_        |d
   |_        |d   |_	        |d   |_
        d|_        |j                  d       |d   D ]K  }| j                  j	                  |d   dg      }| j                  j	                  ||      }|rt        d| d       T|s| j                  ||      }|j	                  dd       }	|	sg |_        n/|	D 
cg c]  }
| j                   j	                  |
        c}
|_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  d d      |_        |j	                  d!d      |_        |j	                  d"d      |_        |j	                  d#d      |_        |j	                  d$d      |_        |j	                  d%d      |_        |j	                  d&d      |_        |j	                  d'd      |_        |j	                  d(d      |_        |j	                  d)d      |_         |j                  |_
        d|_        |j                          N  t               d   }|D ]  }| j                  j	                  dd|d   gddg*      }| j                  jC                         D ]I  }| j                  j	                  ||      r"t        d+| d,| d-|jD                          d.|vrtG        d/|d
    d0      |d.   }| j                  ||      }|j	                  dd       }	|	sg |_        n/|	D 
cg c]  }
| j                   j	                  |
        c}
|_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  dd      |_        |j	                  d d      |_        |j	                  d!d      |_        |j	                  d"d      |_        |j	                  d#d      |_        |j	                  d$d      |_        |j	                  d%d      |_        |j	                  d&d      |_        |j	                  d'd      |_        |j	                  d(d      |_        |j	                  d)d      |_         |j                  |_
        |j                          L  y c c}
w c c}
w )1Nr   r   project_perm_permissionr=  r   rE   Tr   z!add obj CmfProjectPermPermission r   categoryrB   r   project_perm_schemezadd obj CmfProjectPermScheme r@  r  project_permission)r   r?  )r   r  u   Правила uu    уже существуют и могут быть изменены пользователем, не трогаем.access_project_roler   access_local_userFaccess_sdesk_clientaccess_owneraccess_owner_assistantaccess_authoraccess_project_owneraccess_responsibleaccess_anonymousaccess_guestaccess_sharelink_anonymousaccess_executorsaccess_spectatorsaccess_project_owner_assistantaccess_project_spectatorsaccess_project_executorsaccess_list_owner)rH   r}   r?  u-   Создаем проектное право u    в схеме  update_default_rulesu'   Для проектного права u    нужно добавить значения по-умолчанию, применяемые при обновлении к существующим схемам.)$r   r   r   CmfProjectPermPermissionr!   r   r   r   r  rB   r@  r   r"   CmfProjectPermSchemeCmfProjectPermSchemeRuler  CmfProjectRoler  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rk   r;   	Exception)r   project_perm_permission_datar@  r  permproject_perm_scheme_dataschemescheme_rule_datascheme_ruler  is              r   r   r     s   "#+:.G#H G0 "..2264RXIY:Zlp2q5hv6F5GHI224DV$	V$	 ,V$	4		D	!"  (z*?@, -,,00xPVGW8Xjn0o1(62B1CDE002Fv&v&v&!),d# ( 1 "	2266<LMa<blukv6wD 99==V`d=eK}  5j  k  l$==V`d=e"2"6"67Ld"S&24/^q2rYZ63H3H3L3LRS3L3T2r/,<,@,@ATV[,\K).>.B.BCXZ_.`K+'7';';NE'RK$1A1E1EF^`e1fK.(8(<(<_e(TK%/?/C/CDZ\a/bK,-=-A-ABVX]-^K*+;+?+?@RTY+ZK('7';';NE'RK$5E5I5IJfhm5nK2+;+?+?@RTY+ZK(,<,@,@ATV[,\K)9I9M9MNnpu9vK64D4H4HIdfk4lK13C3G3GHbdi3jK0,<,@,@ATV[,\K)"&,,K!%KE"	-` $,:.G#H 0 $#..2264RXIY:Zlp  {D  zE2  F11668 "	#F2266fY]6^EdV?[aZbbcdjdmdmcnop)9#&MhW]N^M_ `D %E F F#+,B#C $==V`d=e&6&:&:;PRV&W#*68K3bu6v]^v7L7L7P7PVW7P7X6vK30@0D0DEXZ_0`-2B2F2FG\^c2d/+;+?+?PU+V(5E5I5IJbdi5j2,<,@,@RW,X)3C3G3GH^`e3f01A1E1EFZ\a1b./?/C/CDVX]/^,+;+?+?PU+V(9I9M9MNjlq9r6/?/C/CDVX]/^,0@0D0DEXZ_0`-=M=Q=QRrty=z:8H8L8LMhjo8p57G7K7KLfhm7n40@0D0DEXZ_0`-&*ll#  "E"	#$#3 3sR 7ws   #Y#Y	c                  (   ddl m}  t               d   }|D ]z  }| j                  j	                  dd|d   gd      }|s&t        d|d           | j                  |d   	      }|d
   |_        |d   |_        d|_        |j                  d       | y )Nr   r   project_rolesr   rE   Tr   zadd obj CmfProjectRole r   r   rB   r   )
r   r   r   r  r!   r   r   rB   r   r"   )r   project_roles_datar  roles       r   r   r   -  s    "!O4& "$$((x?O0Pbf(g+HV,<+=>?((hv.>(?DV$	V$			D	!"r&   c            
         ddl m}  t               d   }|D ]  }|d   }|d   }|d   }|d   }| j                  j	                  dd|g	      }|s>| j                         }||_        ||_        ||_        d
|_        |j                  d
       |j	                  dt                     }|d   D ]>  }	| j                  j	                  |	d   |d
      }
|
sm| j                  |	d   |d
|	j	                  d            }
|	j	                  d      r
|	d   |
_        |	j	                  d      r
|	d   |
_        |
j                          |	d   D ]  }dd|gdd|
gg}|j                  d      r)|j                  d      d   }|j!                  dd|g       n|j!                  dd|g       | j"                  j%                  |d
      rz|j                  d      r;| j#                  |j                  d      d   d|j                  d      d   id      }n| j#                  |      }|
|_        ||_        ||	j	                  dg       v |_        ||	j	                  dg       v |_        |j                  d       r#| j.                  j	                  |      }||_        |j	                  |i       j	                  d!      r&|j	                  |i       j	                  d!      |_        |j                           A  t5                y )"Nr   r   ui_formr   r   r   ui_form_jsonrE   rG   Tr   	ui_fieldsui_group_fields)r   r   r   r   )r   r   r   r   actionparamsr?  r   ui_form_groupzlink::r   linkrH  )r   r  r   r~   hidden_fieldshide_empty_fieldscf_requiredChanged)r   r   r   	CmfUiFormr!   r   r   r   r   r"   dictCmfUiFormGroupr  r  
startswithsplitr.   CmfUiFormFieldsgetr  r   hidden
hide_emptyCmfCustField
cust_fieldrequired_change_scaffold_ui_form_scheme)r   ui_form_listui_form_itemr   r   r   r  r  r  ui_groupr  
field_name_filterui_form_fieldr  s                  r   r   r   =  s"   ":i(L$ 4)F#F#%&67#N3""&&vtT.B&C&&(GGLGL%3G"!GNLL4L( !$$[$&9	$%67 "	)H"11558F;KT[9= 6 ?M  & 5 58F;KT[;?hllSYFZ !6 !\<<)+3H+=M(<<)+3H+=M(""$&x0 )
$dG4]6[\((1#))#.r2DNNF4#67NNF4#<=,,11RV1W!,,W5(.(=(=:CSCSTWCXY[C\HNzO_O_`cOdefOgGhEK )> )M )/(=(=:(=(N0=M/)0M(+5oWY9Z+ZM(/9X\\J]_a=b/bM,!,,U3%+%8%8%<%<*%<%M
3=0 }}Z4889JK8AjRT8U8Y8YZk8l5!&&(/)"	)%4)n r&   c            	      t   ddl m}  t               d   }|D ]  }| j                  j	                  |d         }|r%| j                  |d   |d   d      }|j                          |d	   D ]J  }| j                  j	                  |d
         }| j                  |||d   |d         j                          L  y )Nr   r   ui_form_schemer   r   r   Tr   r  r  r   r   )r  targetr   r   )r   r   r   CmfUiFormSchemer!   r"   r  CmfUiFormSchemeRule)r   ui_form_scheme_listui_form_scheme_dictr  r&  r  s         r   r  r  z  s    ""*%562 D//339LV9T3U#339LV9T[nou[v  @D3  EN!09 D	))--9Y3G-H**.QW:CDT:Uclmzc{ + } ~B  ~B  ~DDDr&   c            
         ddl m } m}m} ddlm}  | j
                         j                         j                  }t               d   }|D ]  }|j                  j                  dd|d   g      }|s=t        d|d           |j                  |d   	      }|j                  d
d      |_        |d   |_        |d   |_        t         | j
                  |      j!                         j#                               |_        d|_        |j)                  d       |d   }|j*                  j                  dd|d   g      }	|	s,t        d|d    d|d           |j+                  |d   	      }	||	_        |d   |	_        |d   |	_        d|	_        g }
|d   j/                  d      }|d   j1                         D ]6  \  }}d}t3        |j                  dg             D ]  \  }}|j                  dd       }|j                  dd       }d}|r|r | j4                  |d      } | j4                  |d      } |dd      |j                         k(  r| |d      z  }||z
  j#                         dz  }|j                         }|j                         }|d    d| d| d|||t        |      |d   d}|
j7                  |       ||z  } d | }t9        |	| d!|d          t9        |	| d"|       9 |	j)                  d       |
D ]  }|j:                  j                  dd|d   g      }|s,t        d#|d    d$|d           |j;                  |d   	      }|	|_        |d%   |_        |d   |_        |d   |_         |d&   |_!        |d'   |_"        |j)                  d        |	|_#        |j)                  d       |jH                  s|jK                  d()        y )*Nr   )rf   	timedeltatimer   calendarr   rE   rG   zAdd calendar r   
is_defaultFr   Tr   default_workweekzAdd default workweek z for calendar r  weekdays	intervals	from_timeto_timez%H:%M   )hours<   z.workz	.intervalr
  r   )r   day_weekr  r  interval_minutesinterval_typeday_type_intervals_total_minuteszAdd work interval z for default workweek r
  r  r     )
back_years)&rf   r  r  r   r   rg   
astimezonetzinfor   CmfCalendarr!   r   r  r   r   int	utcoffsettotal_secondstimezoner   r"   CmfCalendarWorkWeekr   r  r   	enumeratestrptimer.   setattrCmfCalendarWorkWeekIntervalr
  r  r  r  r  r  is_newrecalc_calendar)rf   r  r  r   tzcalendar_datar   system_calendarworkweek_dataworkweekr  workweek_codeweekday_numday_dataintervals_total_minutesr  intervalr  r  r  interval_datar  work_intervals                          r   r   r     sa   22"		"	"	$	+	+BJz*M! P: ,,00xPVGW8X0YM(6"2!345$00hv6F0GO)1lE)JO&'/'/#&|x||B'7'A'A'C'Q'Q'S#T !%t, !!34--11&$V\H]9^1_)-*?)@xX^O_N`ab11}V7L1MH)%f-%f-	%f-33C8%2:%>%D%D%F 	Y!K&'#(k2)FG <8$LLd;	",,y$7#$  1 1 1)W EI/h//AGAqzW\\^392#66(/)(;'J'J'Lr'Q$ ) 0I%llnG  -Q/0k])A3hW +!*&(+,<(=%-f%5!   /'+;;'/<2 }%CHUmXf-=>H%=>@WX=	Y@ 	% " 	/H">>BB6SWYabhYiJjBkM *8F+;*<<RS`agShRijk & B BQWHX B Y#+M %-j%9M"&.{&;M#$,Y$7M!-56H-IM**2?*CM'.	/ ,4(t, !!++q+9aP:r&   c                  V    ddl m}  | j                  dd      j                  d       y )Nr   r   u#   Пример 9-5 календарьF)r   r   Tr   )r   r   r  r"   r   s    r   init_calendarr-    s,    "
2   dTdr&   c                  :   ddl m}  | j                  j                  g d      }|s| j                  d      }d|_        d|_        |j                  d	       | j                  j                  |d
      }|s| j                  |d
      }d|_        d|_        |j                  d	       dD ]  \  }}| j                  j                  |d| d      }|s!| j                  j                  |d| d      }|s| j                  |d| d      }| j                  j                  |      }|s| j                  j                  |      }||_
        d| d|_        |dk(  rdnd|_        |j                  d	        | j                  j                  |d      }|s| j                  |d      }d|_        d|_        |j                  d	       dD ]  \  }}| j                  j                  |d| d      }|s!| j                  j                  |d| d      }|s| j                  |d| d      }| j                  j                  |      }|s| j                  j                  |      }||_
        d| d|_        d|_        |j                  d	        y )Nr   r   )r   rE   system:defaultrG   r/  r   u*   Системная по умолчаниюTr   zsystem-readonly:defaultr   r   u   Только чтение)r]   r\   rY   rX   rW   rV   rb   ra   )r[   rZ   zsystem-readonly-r
  r[   Fzsystem-private:defaultu   Приватный)r1  r2  r3  r4  zsystem-private-)r   r   CmfSecurityLevelSchemer!   r   r   r"   CmfSecurityLevelCmfSecurityLevelRuler    access_memberr   access_readonly)r   r  leveluser_code_old	user_coder$  r8  s          r   r   r     s   "**..6V.WF..4D.E>FKFM
KK$K ##''v<U'VE''v<U'VEL,EJ	JJJ%J " y
 **..eDTU^T__gBh.i..22%HXYfXggoFp2qD..e:J9+U]8^ / `D((,,),<",,00m0DM*&yk:	'4'GtU		D	!#"& ##''v<T'UE''v<T'UEL%EJ	JJJ%K " y **..eOT]S^^fBg.h..22%XeWffnFo2pD..e:I)T\8] / _D ((,,),<",,00m0DM*%i[9	$		D	!#"r&   c                  2   ddl m}  t               d   }|D ]  }| j                  j	                  dd|d   gd      }|s!t        d|d           | j                         }|d   |_        |d	   |_        |d
   |_        d|_	        |j                  d        y)u+   
    Добавляет события
    r   r   
event_typer   rE   Tr   zAdd obj CmfEventType r   rB   r   N)r   r   r   CmfEventTyper!   r   r   r   rB   r   r"   )r   event_type_datar>  events       r   r   r   *  s     #j.O% #
##''j>P/Q8< ( >)*V*<)=>?'')E'
'
'


T
"#r&   c                     ddl m}  t               d   }| j                  j	                  d      }|D ]  }| j
                  j	                  dd|d   gd	      }|s!t        d
|d           | j                         }|d   |_        |d   |_        |d   |_	        d|_
        |j                  d       |d   D ]$  }| j                  j	                  |d         }| j                  j	                  ||d         }|rF|s| j                  ||d         }|j	                  dg       D ]  }| j                  j	                  |      x}	r|j                  j!                  |	       =| j"                  j	                  |      x}
r|j                  j!                  |
       wt%        d|        d|_
        |d   |_        ||_        ||_        |j                          '  y)u   
    Добавляет стандартную схему уведомлений. Клиенты могут ее редактировать!
    r   r   project_notify_schemer/  r   r   rE   Tr   zAdd obj CmfProjectNotifyScheme r   rB   r   r  r>  r0  membersz/scaffold_project_notify_scheme Unknown member: 
model_typeN)r   r   r   CmfEmailTemplater!   CmfProjectNotifySchemer   r   r   rB   r   r"   r?  CmfProjectNotifySchemeRuler    notify_membersr.   r+   r  rE  r>  email_template)r   project_notify_scheme_datadefault_templateobj_datar  	rule_datar>  r$  r<  r/   person_groups              r   r   r   @  s    #!),C!D..228H2I. ,..2264RXIY:ZCG 3 I3HV4D3EFG224Fv&v&v&d#!'* 	I,,00i6M0NJ4488v& 9 D  88!"6* 9 
 ']]9b9 c	$..22	2BBFB''..v6&,&;&;&?&?Y&?&OOlO''..|<#&UV_U`$abbc DK'5DO(DO"2DIIK?	,r&   c                     ddl m}  dd l}| j                  j	                  dg dg dg      r't        d| j                  j	                                 y d}dd	gd
dgfD ]  \  }}t        d|        d}t        d| ddd      5 }|j                  |dd|j                        }g }|D ]  }	|	d   }
|	d   }|rt        |      }nd }|	d   }|j                  | j                  j                         |
||||| j                  j                  j                  d       |dz  dk(  rd| j                  j                  j                  j!                         j#                  ||       | j                  j                  j%                          g }|dz  } |rb| j                  j                  j                  j!                         j#                  ||       | j                  j                  j%                          d d d         y # 1 sw Y   xY w)Nr   r   r   )	dict_namer   	ru_common)rQ  r   ru_itrG   u8   Error! Словарь синонимов не пуст: rR  i'  rS  r=  u"   Загружаем словарь a  INSERT INTO cmf_synonym (
                    id, cmf_created_at, cmf_modified_at, cmf_deleted, cmf_archived, system,
                    stat_usage, stat_search, name, text, dict_name, stat_lang_usage, orderno,
                    import_original, is_favorite, has_tree_nodes, tree_node_is_branch,
                    tree_hidden, perm_public, perm_has_acl, perm_inherit, perm_encrypt, sl_owner_lock, full_search_type
                ) VALUES (
                    :id, now(), now(), FALSE, FALSE, TRUE, 0, 0, :word, :syns, :dictinary,
                    :word_stat, :orderno, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
                    FALSE, FALSE, FALSE, :full_search_type
                );z/opt/eva-app/patch/cmf_synonym_z.dictr )newline;")	delimiter	quotecharquotingrH     )r;   wordsyns	dictinary	word_statr@  full_search_type)r   r   csv
CmfSynonymr!   r   r   readerQUOTE_MINIMALfloatr.   gen_idra  defaultr   data_driverSessionexecuter   )r   rb  r  r_  r@  sqlcsvfilerd  valuesrowr]  r`  r^  s                r   r   r   w  s   "T+JLg$hiHIZIZI^I^I`Habc	A +U3gt_E 2.	729+>?	 3I;eDcSUV %	.ZaZZ3*-s7H7H   JFF 1vF	 %i 0I $I1v ++224  !*!*&(.(9(9(J(J(R(R " t8q=%%((44<<>FFsFS%%((//1FQ=> !!$$0088:BB3O!!$$++-K%	. %	.2.%	. %	.s   E,H  H
	c                     ddl m}  t               d   }|D ]s  }| j                  j	                  dd|d   gd      }|s| j                  |d         }|d	   |_        |d
   |_        |d   |_        d|_        |j                  d       u y)u   
    Добавляет системные фильтры задач. Их нельзя редактировать и удалять.
    r   r   task_filterr   rE   Tr   r   r   ubql2bqlr   N)
r   r   r   r  r!   r   ubqlrs  r   r"   )r   task_filter_scheme_datarM  task_fitlers       r   r   r     s     #&j7+ )))--fdHVDT5Ugk-l --8F3C-DK#F+#G,"5/!4()r&   c                     ddl m}  t               d   }|D ]  }| j                  j	                  dd|d   gd      }|s| j                  |d         }|d	   |_        |d
   |_        |d   |_        |d   |_        |d   |_	        |d   |_
        |d   |_        d|_        |j                  d        | j                  j	                  dg      }|d   s4| j                  j	                  d      }||_        |j                          yy)uS   
    Создает HTML схему по-умолчанию для servicedesk
    r   r   html_schemer   rE   Tr   r   r   sd_namesd_reference_headsd_task_button
home_titlecontent_background_colorcontent_text_colorr   sd_html_scheme)r?  sd_default_schemeN)r   r   r   CmfHtmlSchemer!   r   ry  rz  r{  r|  r}  r~  r   r"   r<   r  )r   html_scheme_datarM  rx  global_settings	sd_customs         r   r   r     s9   
 #z-0$ )**..vtXfEU6Vhl.m ..HV4D.EK#F+&y1(01D(E%%-.>%?"!),!7089S0T,*23G*H&!4() ..22;K:L2MO+,((,,2E,F	)2& -r&   c            	         ddl m}  t               d   }|D ]a  }| j                  j	                  |d         }|s,| j                  |d   |d   d      }|j                  d	       |d
   D ]  }| j                  j	                  |d   d         }|s2| j                  |d   d   |d   d   d      }|j                  d	       | j                  j	                  ||      }|s&| j                  ||d      }|j                  d	       |d   j	                  dg       D ]R  }| j                  j	                  |d   |d      }|r'| j                  |d   |d   |d   |      j                          T  d y )Nr   r   cust_field_conf_schemer   r   r   Tr   r   r  cust_field_confr4   )r   r  )r   r  r   r?  )r   r   r}   captionplaceholder)r   r  r  r   )	r   r   r   CmfCustFieldConfSchemer!   r"   CmfCustFieldConfCmfCustFieldConfSchemeRuleCmfCustFieldConfField)	r   cust_field_config_schemesr  cust_field_config_schemer&  cust_field_configr$  field
field_confs	            r   r   r     s   " (
+C D+ b#)#@#@#D#D&QW.#D#Y ''-'D'D&QW._efl_mNR (E (T$$))D)9 	bI & 7 7 ; ;K\A]^dAe ; f$$*$;$;K\A]^dAeCLM^C_`fCgEI %< %K! "&&&64488@XIZ 9 \D88@XIZcg 9 i		D	)"#4599(BG b#99==5=Yj  }A=  B
!00eFmUS\M]kpq~k  IZ0  [  `  `  bb	bbr&   c                     ddl m}  t               d   }|D ]  }| j                  j	                  |d         }|s)| j                  |d   |d         }|j                          |d   |_        |d   |_        |j                  d	
       | j                  j	                  |d      }| j                  j	                  |d      }| j                  j	                  |d      }|d   D ]  }| j                  j	                  |d   |      }|s| j                         }||_        ||_        |d   |_        |j                          d|v sb|d   D ]L  }	| j                  j	                  |	d   ||      }
|
s| j                  |	d   ||      }
|
j                          N  |d   D ]  }| j                  j	                  |d   |      }|s| j                  |d   |      }d|v r&| j                  j	                  |d   |      |_        n||_        | j                  j	                  |d         |_        |j                           |d   D ]  }| j"                  j	                  |d         }|s| j#                  |      }|d   |_        | j                  j	                  |d   |      g|_        | j                  j	                  |d   |      |_        |j                            y )Nr   r   asset_schemesasset_code_prefix)r  r   )r  r   r   Tr   assets)r   sys_typeasset_types	locationsasset_type_catsr  )r   r   asset_type_cat
asset_cats	asset_catr   r   r~   )r   
asset_type)r   r   r   CmfAssetSchemer!   _scaffold_assetsr   r   r"   r  CmfAssetTypeCatr   r  CmfAssetTypeCmfAssetCatr   default_logic_typeCmfAssetr  r  )r   r  asset_schemer  assets_folderasset_types_folderlocations_foldertype_catr  obj_typer  a_catr  
asset_jsonassets                  r   r   r      s.   " J/M% ;&&**\J]=^*_**\J]=^2>v2F + HF ##%$X."6*d#((,,FX,N#--11-1X!++//v/T$%67 	&H#3377f%f 8 N "!'!7!7!9$*N!);N&"*6"2N!( ( 7 &H!'!4!4!8!8hv>NW]p~!8!J%%+%8%8hv>NW]p~%8%
OO%	&	&$ ",/ 	E//336]6 4 I "..E&M&.Q	e#(.(:(:(>(>E+DV_e(>(f	%(5	%+1+>+>+B+BlH[+B+\I(NN	  'x0 	JOO''Z-?'@Ev6#F+EJ!'!4!4!8!8j>V_e!8!f gE$0044*[:QZ`4aEOJJL	i;r&   c                  (   ddl m}  | j                  j                  g dg dgd      ry t	               d   }|D ]V  }| j                         }|d   |_        |d	   |_        |d
   |_        |d   |_        |d   |_	        |j                  d       X y )Nr   r   r  )r   r   doneTr   resolutionsr   r   rB   r   r  r   )r   r   CmfResolutionr!   r   r   r   rB   r   r  r"   )r   r  
resolutionnew_resolutions       r   r   r   B  s    "(=?T'Ugkl*]+K! ,
--/(0(0(0 *8 4$.|$<!d+,r&   c                      ddl m}  t               d   }|D ]V  }| j                  j	                  |d         }|s| j                  |d         }|d   |_        |j                  ddd	       X y )
Nr   r   
mail_listsr   r   r   TF)r   emitr6   )r   r   r   CmfEmailListr!   r   r"   )r   r  	mail_listnew_mail_lists       r   r   r   R  s}    "L)J E	++//Yv5F/G"//Yv5F/GM&v.TeDEr&   c                     ddl m}  t        j                  j	                  t
        j                  d      }t        |      5 }|j                         }d d d        | j                  j                  d      }|s| j                  d      }d|_        d|_        |_        d|_        |j                  d	       y # 1 sw Y   hxY w)
Nr   r   z$cmf/templates/mail_notification.htmlr/  r   Tu   По умолчаниюz+[{{project_name}}] ({{code}}) {{msg_title}}r   )r   r   r   pathjoinr   PROJECT_DIRr   r   rF  r!   r   r   tmplt_body_htmltmplt_subjectr"   )r   r  r  
body_tmpltdefault_email_templates        r   r   r   ]  s    "77<<**,RSD	d qVVX
 $4488>N8O!!'!8!8>N!8!O$(!";-7*+X($/ s    B88Cc                     ddl m}  | j                  ddddd      }|j                          t        j
                  j                  t        j                  d	      }t        |      5 }|j                         }d d d        |j                  _        |j                  j                          |j                  j                          y # 1 sw Y   OxY w)
Nr   r   u   Портал компанииzproject.wiki:defaultsectionWPCT)r   r   project_typetask_code_prefixr  z#cmf/templates/company_homepage.html)r   r   r  r"   r   r  r  r   r  r   r   descr_document
text_draft
do_publish)r   r  r  r  homepages        r   r   r   o  s    ",)   G LLN77<<**,QRD	d q668 )1G%!%%' s   &CCc                     ddl m}  | j                  j                  dd      }|s"| j                  ddd      j	                         }| j
                  j                  |dd	      }|s$| j                  ||ddd
      j	                         }| j                  j                  ddd      }|s2| j                  dddt        j                        j	                         }y y )Nr   r   app_gitT)r  r   u   Репозитории)r   r  r   CmfEvagitGroup)r  r   r   )r  r   r   r   r   evagit_sync)r   	hook_typer   )r   r  r   
token_user)	r   r   r  r!   r"   CmfRegistry
CmfWebhookr   system_user)r   evagit_root_folderevagit_reposwebhooks       r   r   r     s    "))--y-N#--3KV_hl-mrrt%%))6HO_hl)mL))*%)! *  df 	 ##-X\#]G###}}	 $ 
 df 	 r&   c                      ddl m}  t               d   }|D ]J  }| j                  j	                  dd|d   gd      }|r) | j                  d	ddi|j                         }L y )
Nr   r   evagit_rolesr   rE   Tr   r   r"  )r   r   r   CmfEvagitRoler!   r"   )r   
roles_data	role_datar  s       r   r   r     sp    "N+J K	##''i>O/Pbf'g'6''CCCHHJDKr&   c                     ddl m}  | j                  j                  dd      }|s]| j                  dd      j	                         }d|j
                  _        |j
                  j	                          |j                          y y )Nr   r   evagitT)r   r   )r   r   CmfPluginGitr!   r"   r   sync_enabledsync)r   
git_plugins     r   r   r     sp    "$$((ht(DJ((ht(DIIK
)-
& 	 r&   )F)rt  zlist[dict[str, Any]])=__doc__rf   r
   r   typingr   flaskr   cmfr   
CMF_FOLDERr	   r   r%   r(   r1   r8   r=   r@   ry   r   r   r   r   r   r   r   r   r  r  r   r   r   rX  rn  r   r   r   r  r  r   r   r   r  r   r-  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r&   r   <module>r     sE     	   ''((AB %
xw>J0Z

C!N0'2& &R&6D4<&+^D,N D*)V$B"J		j#X" :zDW:r>"B#,5n:.x)$>b8@D, 	E0$((4Kr&   