
    SIg\C                     `    d dl m Z  d dlmZ d dlT d dlmZ d dlZ G d dej                  ZdS )    )cached_property)fields)*)cmf_plugin_evaNc                   `    e Zd Zej        j        dgz   Zd Zd Zd Zd Z	d Z
d Zd ZddZd
S )CmfPluginEvaget_all_projectsc                   dd l }g }t          j                            |dg          | _        |                                 5 }|dz                                  D ]t}t          |dz  d          5 } |j        |          }	|	                    t          |	d         |	d         |	d	         
                     d d d            n# 1 swxY w Y   u	 d d d            n# 1 swxY w Y   |S )Nr   json_settings)idr   projects	info.jsonrr   task_code_prefixname)ext_idr   r   )jsonmodels	CmfImportget
cmf_import_extract_dumpiterdiropenloadappenddict)
selfcmf_import_idargskwargsr   resdump_dirproject_dirfobjs
             +./modules/settings/models/cmf_plugin_eva.pyr	   zCmfPluginEva.get_all_projects   s    *..-HY.ZZ!! 	sX (: 5>>@@ s s+3S99 sQ#$)A,,CJJt3t9sK]G^ehioepqqqrrrs s s s s s s s s s s s s s ss	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 	s 
s7   -C/AC7CCC
CCC #C c                     g S N )r   s    r'   calc_models_settingsz!CmfPluginEva.calc_models_settings   s    	    c                 |    dd l dd lddlm  G fdd          } || j        j        d                   S )Nr   )Pathc                   ,    e Zd ZddZ fdZd ZdS )9CmfPluginEva._extract_dump.<locals>.TempDirContextManagerreturnNc                     || _         d S r)   )backup_attach_id)r   r3   s     r'   __init__zBCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__init__    s    (8%%%r,   c                 N                                    | _        t          j                            | j                  }                    |j        d          5 }|                    | j        j	                   d d d            n# 1 swxY w Y    | j        j	                  S )N)r   r   )
TemporaryDirectorytmp_dirr   CmfAttachmentr   r3   ZipFilefull_path_file
extractallr   )r   attachzip_refr.   tempfilezipfiles      r'   	__enter__zCCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__enter__"   s    '::<<-11T5J1KK__V%:C@@ :G&&t|'8999: : : : : : : : : : : : : : :tDL-...s    BBBc                 8    | j                                          d S r)   )r7   cleanup)r   exc_typeexc_valexc_tbs       r'   __exit__zBCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__exit__)   s    $$&&&&&r,   )r1   N)__name__
__module____qualname__r4   r@   rF   )r.   r>   r?   s   r'   TempDirContextManagerr0      s[        9 9 9 9/ / / / / / /' ' ' ' 'r,   rJ   r3   )r>   r?   pathlibr.   r   r   )r   rJ   r.   r>   r?   s     @@@r'   r   zCmfPluginEva._extract_dump   s                  	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' %$T_%BCU%VWWWr,   c                 (   |sd S t                               |d                   }|                    ddd|d         gdd|d         gg          }|s|                    dd|d         g          }|s|                    dd|d         g          }|S )Nr   OR==r   filtercoder   )cmfutilget_model_by_idr   )r   	obj_querymodelr&   s       r'   _search_objzCmfPluginEva._search_obj/   s     	4''	$88iitT9T?&ChPTV_`dVeEfgihh 	F))FD)F2C#D)EEC 	F))FD)F2C#D)EEC
r,   c                    |dz  }|                                 sd S |                                D ]S}t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   |                     |           Td S )Nusersr   )existsr   r   r   r   _process_person)r   r$   	users_dir	user_pathr%   	user_jsons         r'   _process_userszCmfPluginEva._process_users:   s    ')	!! 	F"**,, 	, 	,Ii%% ) IaLL	) ) ) ) ) ) ) ) ) ) ) ) ) ) )  ++++	, 	,   A##A'	*A'	c                 
    ddl m  fd fdd _        | _                              j        j        d                    _         j        d         d         d         }|d         st          d	          d
 |d         D              _         	                                5 } j        
                                 t                       t                      } j        D ]} j        j                            d|d                     |dz  |d         z  }t          |dz  d          5 }t!          j        |          }|d                                         D ]5\  }	}
|	|v r|
||	         z  }
|
||	<    j                            |	|
           6	 d d d            n# 1 swxY w Y                        |           t          |dz  d          5 }t!          j        |          }d d d            n# 1 swxY w Y   ddd|d         gdd|d         gg}t*          j                            |d          st*                              |d         |d         |d         |d                              |d                                        |d                                        |d                   |d         |d           j        !
  
        
                                 t                       |d"z  }|                                r|                                D ]}t          |dz  d          5 }t!          j        |          }d d d            n# 1 swxY w Y    j                            d#d$            j        j                            d%|d          d&|d'          d(           ddd|d         gdd|d         gg}t*          j                            |d)g*          }|st*                              |d         |d         |d                              |d+                                        |d                                        |d                                        |d,                   |d         |d           j        -          }|
                    d.           t                        |d/         ||           |d0z  } |           	 d d d            d S # 1 swxY w Y   d S )1Nr   )BeautifulSoupc                    |dz  }| D ]}t           j                            |d                   }|sEt                               |d         ||d         j                  }|                    d           ||d         z  }|                                rt          |d          5 }|                    |           d d d            n# 1 swxY w Y   |j        j	        r|j        j	        
                    |d         |j        j	                  } |d	          }	|	                    d
|j        j	        i          D ]}
|j        j	        |
j        d<   d                    d |	j        j        D                       |_        n j                            d| d|           j                            dd           t)                       |                    d           t)                       d S )Nattachmentsr   )r   r   )r   parentr   r   Tsave_importrblxmlzdata-attach-id)attrssrc c                 ,    g | ]}t          |          S r*   )str).0xs     r'   
<listcomp>zKCmfPluginEva.process_import.<locals>.import_attachments.<locals>.<listcomp>X   s    .R.R.R!s1vv.R.R.Rr,   u&   Вложения нет в дампе zERR-0109)
error_coder&   
attachment	processed)r   r8   r   r   saverY   r   upload_stream_filetextvaluereplacer   find_allurlri   joinbodychildren	log_errorinc_stat
cmf_commit)rc   r#   rd   attachments_dirattach_metar<   attach_pathr%   rv   souptagra   r   s              r'   import_attachmentsz7CmfPluginEva.process_import.<locals>.import_attachmentsE   s?   &6O*  -11T9J1KK 2#11{67JSYbmnrbs=A_ 2 N NFKKDK111-D0AA%%'' k400 5A11!4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5{( T%{088T9JFIO\\,}T6::#'==8H7Y=#Z#Z @ @C/5z/?CIe,,&(gg.R.Rty?Q.R.R.R&S&SO--R[RR'1v .   
 (({CCCKKDK)))LLLLLs   (C

C	C	c                    |                                  sd S |                                 D ]N}t          |dz  d          5 }t          j        |          }d d d            n# 1 swxY w Y   j        j                            d|d          d|d          d           t          	                    |d                   }|j
        d	k    rj                            d
d           nj                            dd           ddd|d         gdd|d         gdd|d         gg}|                    |          }|s$|                    dd|d         gdd|gg          }|s ||d         |d         
||d                             |d                                       |d                                       |d                                       |d                   |d         |d         j                  }|                    d           |j        r<|j
        d	k    r#|d         |_        |                    d           t#                        |d         ||            	|dz  |           Pd S )Nr   r   u"   Обработка обьекта r   (rQ   )r   CmfDocumentdocumentrs   folderrM   r   rN   rO   tree_parentrv   status
cmf_author	cmf_ownerresponsiblecmf_created_atcmf_modified_at)r   rv   rd   r   r   r   r   r   r   r   r   r   Tre   rc   r}   )rY   r   r   r   r   r   loggerinforR   rS   
class_namer   r   rV   rt   import_original
text_draftr   )r#   r   obj_dirr%   obj_jsonrU   _filterr&   r   import_documentsprojectr   s           r'   r   z5CmfPluginEva.process_import.<locals>.import_documentsd   s   ??$$ #++-- #< #<'K/55 ,#y||H, , , , , , , , , , , , , , ,&++,wQYZ`Qa,w,wdlmsdt,w,w,wxxx//??#}44O,,ZEEEEO,,X{CCC4$ @x~6!4&)9:< iiwi// s))VT8F;K,L}^bdoNp+q)rrC /%Xf%5%-f%5'.,7'/~'+'7'78J'K'K+/+;+;H\<R+S+S*.*:*:8K;P*Q*Q,0,<,<Xm=T,U,U/78H/I089J0K+/?< < <C HHH...& !~66)1&)9T222LLL""8M#:GSIII  :!5s;;;;G#< #<r_   import_settingsselectedObjectsrw   	isCheckedu5   Не выбрали ни одного проекта!c                 >    g | ]}|d          
|d         |d          S )r&   r   r*   )rn   vals     r'   rp   z/CmfPluginEva.process_import.<locals>.<listcomp>   s2    !l!l!lCPUJ!l[^_j[k!l#e*!l!l!lr,   r}   u"   Обработка проекта r   r   r   zdump_info.jsonr   stats)rw   r   rM   rN   r   T)rP   include_deletedrv   r   
logic_typer   r   r   r   )
r   rv   r   r   r   r   r   r   r   r   taskstaskrs   u    Обработка задачи r   rQ   r   r   rP   r   r   r   )r   rv   rd   r   r   r   r   r   r   r   r   re   rc   	documents)bs4ra   
has_errorsr   _normalize_settingsr   settings	Exceptionselected_projectsr   rt   r   r   r   r   r   r   r   itemsr   r^   r   
CmfProjectr   rV   rY   r   CmfTask)r   r   rootr#   prev_dump_infor&   r$   r%   	dump_infokeyr   project_jsonr   	tasks_dirtask_dir	task_jsonr   docs_dirra   r   r   r   s   `                 @@@@r'   process_importzCmfPluginEva.process_importC   s   %%%%%%	 	 	 	 	 	>&	< &	< &	< &	< &	< &	< &	< &	<P $001NO`1abb}./8;K  	USTTT!l!lZ8H!l!l!l!! <	4XO  """LLL!VVN- 84 84&++,^QTU[Q\,^,^___&3c(mC+(88#>> A! $	!I$-g$6$<$<$>$> A AS.00>##66C.1s+00C0@@@@	AA A A A A A A A A A A A A A A ##K000+3S99 0Q#'9Q<<L0 0 0 0 0 0 0 0 0 0 0 0 0 0 04d1C DtTS_`dSeFfg +//wPT/UU #$//\&5I5A&5I7CD7IAMN`Aa;?;K;KLYeLf;g;g;?;K;KLYeLf;g;g:>:J:J<XcKd:e:e?KL\?]@LM^@_;?? 0 
2 
2G LLNNN''1	##%% U$-$5$5$7$7 U U!(["8#>> 5!(,	!I5 5 5 5 5 5 5 5 5 5 5 5 5 5 500EEE.334W`agWh44ktu{k|444  A  A  A"&44(IDRVXabfXgKh!i%~11#1OO# )#)>>y7H5>v5F7>7@7;7G7G	RZH[7\7\;?;K;KIVbLc;d;d:>:J:J9U`Ka:b:b<@<L<LYWdMe<f<f?HIY?Z@IJ[@\;?? $2 
$L 
$LD !II$I777&LLL**9]+CXtTTTT '4  73333q84	<	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4 <	4s   -B	S96A%F(S9(F,,S9/F,0+S9G<0S9<H  S9H D;S9?M 	S9 M$$S9'M$(FS99S= S=c                 V    |j         | _        |j        st          d           dg d}|gS )Nu+   Добавьте файл с бекапомEvaTeam)r   r   )r   _loggerrc   	cmf_alert)r   r   r   s      r'   calc_import_settingsz!CmfPluginEva.calc_import_settings   s<    !(% 	ECDDD%44zr,   TNc           
      8   |sd S |rd| dnd}| j         j                            d|d          d|d                     |d         r&t          j                            |d	         
          S d| j         j        j        j         d|d	          d}ddg}t          j                            dd|d         g|          }|st          j                            ddd| dg|          }|st          j                            dd|d         g|          }	t          |	          dk    rK| j         
                    d|d          dt          |	           d| dd           | xj        dz  c_        g }	|	s| j         j                            d|d          d|            dd|d         g}
t          j                            |
|          }	|	sNddd|d         gdd|d         ggdd|d         gdd|d         ggg}
t          j                            |
|          }	t          |	          dk    rR| xj        dz  c_        | j         
                    d |d          d!|d          d"t          |	           d| dd           |	r	|	d#         }n:| j                             d$|d          d!|d          d%| t          j                   d&}|s|rd'}d}|d         }t          j                            dd|                                g|          r| j                             d(| d)t          j                   |d                             d*          \  }}| d+| d*| }|dz  }t          j                            dd|                                g|          t                              ||| j         d',          }nd |fS |r|j        rd-D ]}t)          ||||                    |j        r||j        vr|j         | |_        n||_        t          j                                        }|j                            |           d'|_        |                    dg           D ]}d| j         j        j        j         d|d.          d}t          j                            ddd| dgdg          }|s+t          j                            dd|d         gdg          }|s*t                              || j         d'|d         |/          }|j        r|d         |_        |j        s||_        n||j        vr|j         | |_        |                    d'0           |j                            |           |j        r|                    d'0           |S )1Nr   r   rk   u0   Импортируем пользователя r   z, login=loginsystemrQ   )rQ   z::r   rg_member_ofILIKEr   r   LIKE%email   u+   Пользователей с почтой z >  zERR-0037	CmfPerson)obj_typeuH   Не удалось найти пользователя с почтой rN   rM   
first_name	last_nameu+   Пользователей с именем z (z) > r   uM   Не нашли пользователя среди существующих z) FTuQ   Обнаружена учетная запись с дублирующим email u   , добавляем цифру@+)r   r   r   r   )r   r   r   second_namer   phone_mobiler   )r   r   r   r   import_raw_jsonre   )r   r   r   r   r   r   pluginsource_hashlistlenr~   r   warninglogloggingINFOlowerWARNINGsplitr   setattrr   CmfPersonGroup
user_groupr   r   
user_localr   rt   
is_changed)r   	user_dictcreateupdater&   obj_msgr   r   personpersonsr   
is_creatednr   prefix_emaildomainr   r   
group_infogroups                       r'   rZ   zCmfPluginEva._process_person   s    	4 #+*c****##  %GW`agWh  %G  %Gr{  }D  sE  %G  %G  	H  	H  	HX 	@#''Yv->'??? Ydo,3?XX9VCTXXX^$!%%gw	'@R-S\b%cc  	%))(FMMMM1R[a)bbF  *//)T[J\7]fl/mmw<<!##O--  /L\efm\n  /L  /Lsvw~ss  /L  /L  CJ  /L  /L.8; . P P POOq(OO G 	WO*22 Bclmtcu  B  Bx  B  B    &tYv->?G$.33763RRG" W!%tY|=T(UXceikt  vA  lB  XC  (D&2D)K:P%QT_aegpq}g~S  %A!B"("2"7"7wv"7"V"Vw<<!##OOq(OOO-- LiPVFW  L  L[del[m  L  Lsvw~ss  L  L  CJ  L  L"!, .   
  $QZFFO'' ]hqrxhy  ]  ]  ~G  HO  ~P  ]  ]  T[  ]  ]   
 	( (!
(&**77EKKMM2R[a*bb O''  )c  }B  )c  )c  )c  el  et  u  u  u+4W+=+C+CC+H+H(L&+::a::&::EFA	 &**77EKKMM2R[a*bb 
  ))05$/:> * @ @ Z'' "	.% 9f 9 9CFC38888 } '..'-}$>f$>$>FM &.99;;J&&z222 $F'mmNB?? 2 2
_do4;G__:VZK[___-11(FMPVMMM9Zdgch1ii o"155fdJW]L^=_ilhm5nnE i"11?C`d9CF9K]g 2 i iE ( 4!+F!3EJ| =#)ELL5<//&+l#<F#<#<EL

t
,,,#**51111  .---r,   )TTN)rG   rH   rI   r   r   api_methodsr	   r+   r   rV   r^   r   r   rZ   r*   r,   r'   r   r      s         -9= K
 
 
  X X X&	 	 	, , ,M4 M4 M4`  a a a a a ar,   r   )r   cmfr   cmf.includemodules.settings.fieldsr   r   r   r*   r,   r'   <module>r      s    + + + + + +           2 2 2 2 2 2 s s s s s>. s s s s sr,   