
    hnC                     d    d dl m Z  d dlmZ d dl d dlmZ d dlZ G d dej                        Zy)    )cached_property)fields)*)cmf_plugin_evaNc                   r    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y	)CmfPluginEvaget_all_projectsc                   dd l }g }t        j                  j                  |dg      | _        | j                         5 }|dz  j                         D ]R  }t        |dz  d      5 } |j                  |      }	|j                  t        |	d   |	d   |	d	   
             d d d        T 	 d d d        |S # 1 sw Y   ixY w# 1 sw Y   |S xY w)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! 	sX (: 5>>@ s+3S9 sQ#$))A,CJJt3t9sK]G^ehioepqrs ss	s 
	s s	s 
s#   &B>$9B2
B>2B;7B>>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y)9CmfPluginEva._extract_dump.<locals>.TempDirContextManagerNc                     || _         y r)   )backup_attach_id)r   r2   s     r'   __init__zBCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__init__    s
    (8%r,   c                 f   j                         | _        t        j                  j	                  | j
                        }j                  |j                  d      5 }|j                  | j                  j                         d d d         | j                  j                        S # 1 sw Y   %xY w)N)r   r   )
TemporaryDirectorytmp_dirr   CmfAttachmentr   r2   ZipFilefull_path_file
extractallr   )r   attachzip_refr.   tempfilezipfiles      r'   	__enter__zCCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__enter__"   s    '::<--11T5J5J1K__V%:%:C@ :G&&t||'8'89:DLL--..: :s   &B''B0c                 8    | j                   j                          y r)   )r6   cleanup)r   exc_typeexc_valexc_tbs       r'   __exit__zBCmfPluginEva._extract_dump.<locals>.TempDirContextManager.__exit__)   s    $$&r,   )returnN)__name__
__module____qualname__r3   r?   rE   )r.   r=   r>   s   r'   TempDirContextManagerr0      s    9/'r,   rJ   r2   )r=   r>   pathlibr.   r   r   )r   rJ   r.   r=   r>   s     @@@r'   r   zCmfPluginEva._extract_dump   s0      	' 	' %T__%B%BCU%VWWr,   c                     |sy t         j                  |d         }|j                  ddd|d   gdd|d   gg      }|s|j                  dd|d   g      }|s|j                  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    ''	$8iitT9T?&ChPTV_`dVeEfgih))FD)F2C#D)EC))FD)F2C#D)EC
r,   c                     |dz  }|j                         sy |j                         D ]=  }t        |d      5 }t        j                  |      }d d d        | j                         ? y # 1 sw Y   xY w)Nusersr   )existsr   r   r   r   _process_person)r   r$   	users_dir	user_pathr%   	user_jsons         r'   _process_userszCmfPluginEva._process_users:   so    ')	!"**, 	,Ii% ) IIaL	)  +	,) )s   A((A1	c                     ddl m  fd fdd _        | _         j	                   j                  j
                  d          _         j                  d   d   d   }|d   st        d	      |d
   D cg c]  }|d   s	|d   s|d    c} _         j                         5 } j                  j                          t                t               } j                  D ]B  } j                  j                  j                  d|d           |dz  |d   z  }t        |dz  d      5 }t!        j"                  |      }	|	d   j%                         D ]3  \  }
}|
|v r|||
   z  }|||
<    j                  j'                  |
|       5 	 d d d         j)                  |       t        |dz  d      5 }t!        j"                  |      }d d d        dddd   gdd|d   gg}t*        j,                  j/                  |d      st*        j-                  |d   |d   |d   |d    j1                  |d          j1                  |d          j1                  |d         |d   |d     j                  !
      j                          t                |d"z  }|j3                         rq|j5                         D ]]  }t        |dz  d      5 }t!        j"                  |      }d d d         j                  j'                  d#d$        j                  j                  j                  d%d    d&|d'    d(       ddd|d   gdd|d   gg}t*        j6                  j/                  |d)g*      }|st*        j7                  |d   |d   |d    j1                  |d+          j1                  |d          j1                  |d          j1                  |d,         |d   |d     j                  -      }|j                  d.       t                 |d/   ||       ` |d0z  } |       E 	 d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   txY w# 1 sw Y   y xY w)1Nr   )BeautifulSoupc           	      *   |dz  }| D ]  }t         j                  j                  |d         }|s;t         j                  |d   ||d   j                        }|j	                  d       ||d   z  }|j                         rt        |d      5 }|j                  |d	
       d d d        |j                  j                  r|j                  j                  j                  |d   |j                  j                        } |d      }	|	j                  d|j                  j                  i      D ]%  }
|j                  j                  |
j                  d<   ' dj                  |	j                   j"                  D cg c]  }t%        |       c}      |_        n!j                  j'                  d| d|       j                  j)                  dd       t+                 |j	                  d       t+                y # 1 sw Y   _xY wc c}w )Nattachmentsr   )r   r   )r   parentr   r   Tsave_importrbF)
mark_dirtylxmlzdata-attach-id)attrssrc u&   Вложения нет в дампе zERR-0109)
error_coder&   
attachment	processed)r   r7   r   r   saverY   r   upload_stream_filetextvaluereplacer   find_allurlri   joinbodychildrenstr	log_errorinc_stat
cmf_commit)rb   r#   rc   attachments_dirattach_metar;   attach_pathr%   rq   souptagxr`   r   s               r'   import_attachmentsz7CmfPluginEva.process_import.<locals>.import_attachmentsE   s   &6O* --11T9J1K#11{67JSYbmnrbs=A__ 2 NFKKDK1-D0AA%%'k40 GA11!1FG{{((%{{0088T9JFIIOO\,T6:#'==8H7Y=#Z @C/5zz/?/?CIIe,@&(ggtyy?Q?Q.R!s1v.R&SOO--D[MR'1v . 
 (({C34 KKDK)L%G G /Ss   H=H
H	c                 F   | j                         sy | j                         D ]  }t        |dz  d      5 }t        j                  |      }d d d        j
                  j                  j                  dd    d|d    d       t        j                  |d         }|j                  d	k(  rj
                  j                  d
d       nj
                  j                  dd       ddd|d   gdd|d   gdd|d   gg}|j                  |      }|s|j                  dd|d   gdd|gg      }|s ||d   |d   
||d   j                  |d         j                  |d         j                  |d         j                  |d         |d   |d   j
                        }|j                  d       |j                  r5|j                  d	k(  r|d   |_        |j                  d       t#                 |d   ||        	|dz  |        y # 1 sw Y   xY w)Nr   r   u"   Обработка обьекта r   (rQ   )r   CmfDocumentdocumentrn   folderrM   r   rN   rO   tree_parentrq   status
cmf_author	cmf_ownerresponsiblecmf_created_atcmf_modified_at)r   rq   rc   r   r   r   r   r   r   r   r   r   Trd   rb   rx   )rY   r   r   r   r   r   loggerinforR   rS   
class_namer{   r   rV   ro   import_original
text_draftr|   )r#   r   obj_dirr%   obj_jsonrU   _filterr&   r   import_documentsprojectr   s           r'   r   z5CmfPluginEva.process_import.<locals>.import_documentsd   sE   ??$#++- #<'K/5 ,#yy|H,&&++.PQYZ`QaPbbcdlmsdtcuuv,wx//?##}4OO,,ZEOO,,X{C4$ @x~6!4&)9:< iiwi/))VT8F;K,L}^bdoNp+q)rCXf%5%-f%5'.,7'/~'+'7'78J'K+/+;+;H\<R+S*.*:*:8K;P*Q,0,<,<Xm=T,U/78H/I089J0K+/??<C HHH.&&~~6)1&)9T2L"8M#:GSI :!5s;G#<, ,s   HH 	import_settingsselectedObjectsrr   	isCheckedu5   Не выбрали ни одного проекта!rx   r&   u"   Обработка проекта r   r   r   zdump_info.jsonr   stats)rr   r   rM   rN   r   T)rP   include_deletedrq   r   
logic_typer   r   r   r   )
r   rq   r   r   r   r   r   r   r   r   taskstaskrn   u    Обработка задачи r   rQ   r   r   rP   r   r   r   )r   rq   rc   r   r   r   r   r   r   r   r   rd   rb   	documents)bs4r`   
has_errorsr   _normalize_settingsr   settings	Exceptionselected_projectsr   ro   r|   r   r   r   r   r   r   itemsr{   r^   r   
CmfProjectr   rV   rY   r   CmfTask)r   r   rootvalr#   prev_dump_infor&   r$   r%   	dump_infokeyproject_jsonr   	tasks_dirtask_dir	task_jsonr   docs_dirr`   r   r   r   s   `                 @@@@r'   process_importzCmfPluginEva.process_importC   s   %	>&	<P $001N1NO`1ab}}./8;K STT8<Z8H!lCPUJ[^_j[k#e*!l! <	4XOO  "L!VN-- 84&&++.PQTU[Q\P],^_&3c(mC+(88#> A! $		!I$-g$6$<$<$> AS.0>##66C.1s+00C0@	AA ##K0+3S9 0Q#'99Q<L04d1C DtTS_`dSeFfg ++//wPT/U$//\&5I5A&5I7CD7IAMN`Aa;?;K;KLYeLf;g;?;K;KLYeLf;g:>:J:J<XcKd:e?KL\?]@LM^@_;??? 0 
2G LLN''1	##%$-$5$5$7 U!(["8#> 5!(,		!I500E..336VW`agWhViijktu{k|j}}~4  A"&44(IDRVXabfXgKh!i%~~11#1O##)>>y7H5>v5F7>7@7;7G7G	RZH[7\;?;K;KIVbLc;d:>:J:J9U`Ka:b<@<L<LYWdMe<f?HIY?Z@IJ[@\;??? $2 
$LD !II$I7&L*9]+CXtT+U0 '4 73q84	<	4 <	4 "mA A0 0*5 5I<	4 <	4sj   
P<P<P<1BQ(5AQ(Q(=QD Q(Q	)E	Q(QQ(QQ(Q% Q((Q1c                 b    |j                   | _        |j                  st        d       dg d}|gS )Nu+   Добавьте файл с бекапомEvaTeam)r   r   )r   _loggerrb   	cmf_alert)r   r   r   s      r'   calc_import_settingsz!CmfPluginEva.calc_import_settings   s3    !((%%CD%4zr,   Nc           
      :   |sy |rd| dnd}| j                   j                  j                  d|d    d|d           |d   r#t        j                  j                  |d	   
      S d| j                   j                  j                  j                   d|d	    d}ddg}t        j                  j                  dd|d   g|      }|st        j                  j                  ddd| dg|      }|st        j                  j                  dd|d   g|      }	t        |	      dkD  rJ| j                   j                  d|d    dt        |	       d| dd       | xj                  dz  c_        g }	|	s| j                   j                  j                  d|d    d|        dd|d   g}
t        j                  j                  |
|      }	|	sBddd|d   gdd|d   ggdd|d   gdd|d   ggg}
t        j                  j                  |
|      }	t        |	      dkD  rN| xj                  dz  c_        | j                   j                  d |d    d!|d    d"t        |	       d| dd       |	r|	d#   }n9| j                   j                  d$|d    d!|d    d%| t        j                         d&}|s|rd'}d}|d   }t        j                  j                  dd|j!                         g|      r| j                   j                  d(| d)t        j"                         |d   j%                  d*      \  }}| d+| d*| }|dz  }t        j                  j                  dd|j!                         g|      rt        j	                  ||| j                   d',      }nd |fS |r|j&                  rd-D ]  }t)        ||||           |j*                  r$||j*                  vr|j*                   | |_        n||_        t        j,                  j/                         }|j0                  j3                  |       d'|_        |j                  dg       D ]-  }d| j                   j                  j                  j                   d|d.    d}t        j,                  j                  ddd| dgdg      }|s(t        j,                  j                  dd|d   gdg      }|s't        j-                  || j                   d'|d   |/      }|j&                  r
|d   |_        |j*                  s||_        n#||j*                  vr|j*                   | |_        |j9                  d'0       |j0                  j3                  |       0 |j:                  r|j9                  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_jsonrd   )r   r   r   r   r   r   pluginsource_hashlistlenrz   r   warninglogloggingINFOlowerWARNINGsplitr   setattrr   CmfPersonGroup
user_groupr   r   
user_localr   ro   
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    #AcU!*##&VW`agWhViiqr{  }D  sE  rF  %G  	HX##''Yv->'?? doo,,33??@9VCTBUUWX^$!!%%gw	'@R-S\b%c%%))(FaxqM1R[a)bF **//)T[J\7]fl/mw<!#OO--0[\efm\n[oorsvw~s  sA  AB  CJ  BK  /L.8; . POOq(O GOO**22bclmtcubvvwx  xA  B  &tYv->?G$..33763RG"!%tY|=T(UXceikt  vA  lB  XC  (D&2D)K:P%QT_aegpq}g~S  %A!B"("2"2"7"7wv"7"Vw<!#OOq(OOO--EiPVFWEXXZ[del[mZnnrsvw~s  sA  AB  CJ  BK  L"!, . 
 $QZFOO''ghqrxhygzz|  ~G  HO  ~P  }Q  QS  T[  S\  ] 
!
(&&**77EKKM2R[a*bOO''*{  }B  |C  Cb  )c  el  et  et  u+4W+=+C+CC+H(L&+nAaS&:EFA	 &&**77EKKM2R[a*b
  ))05$//:> * @ Z''%%f 9CFC389 }}.'-}}ofX$>FM &..99;J&&z2 $F'mmNB? 2
doo44;;GGH:VZK[J\\^_--11(FaPVxWXM9Zdgch1i"1155fdJW]L^=_ilhm5nE"11?C`d9CF9K]g 2 iE ((!+F!3EJ||#)EL5<</&+ll^F8#<EL

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