
    .+hw5                     v    d dl T d dlT d dlZd dlZd dlT d dlZd
dZ edd          	 	 	 	 	 dd	            Z	dS )    )*NcsvFc           
         ddl m}m} t          j                                        }|                    d          }	dt          j        j         d|	 d| }
t          
                    t          j        |
          }|                                5  |                                 d d d            n# 1 swxY w Y    |t          | |j        |||||g           |j        S )Nr   )schedule_deferred_jobcmfutilz%Y%m%d%H%M%Szexport..)parentname)args)cmf.includer   r   datetimenowstrftimegcurrent_useridmodelsCmfAttachmentdisable_aclsaveexport2file_taskurl)
class_namefield_namesbqlformat_fileinclude_archivedorder_byr   r   r   formatted_timeexport_filename
attachments               ./cmf/util/cmf_export.pyexport2filer#   	   s;   :::::::: 



!
!C \\.11N S 1RRNRR[RRO%%Q^/%RRJ					                **2<-2=252=2B2:2< = = = = >s   B11B58B5u'   Экспорт данных в файлT)descriptionshow_bg_progressbarc                 n  4567 ddl }ddlm6 t          t                    |          5t          j                            |          }	dt          f6fd445fd}
dB7fd	7d	 }d
t          f5fd}|s#d 5j	        
                                D             }t                      }|D ]v}|dk    rd}nV5j	                            |          r<t          5j	                            |          t          j	        j                  r|dz  }|                    |           w|} ||          }d|v rd|d<   t          j                    5 }|dk    r| d}t#          |dd          5 }ddl}|                    |dd|j                  }g }t+           |
|                    D ]\  }}g }|D ]}|dk    rW|                    |                    |                     |dv r+|                    |                    |           d            |||          }t-          5|d          }|                     7||                     |dv rC|                     7 |||                    d          }|                    |j                   |dk    r|                    |           |                    |           	 ddd           n# 1 swxY w Y   n|dk    r!ddlm} ddlm}  ||d          }|                    d           }|                    d!d"           |                    d#          } |                    |            |                    d$          }!d%|!_        |                     |!           |                    d&          }"t@          j!        |"_        |                     |"           |                    d'          }#d(|#_        |                     |#           |                    d)          }#d*|#_        |                     |#           |                    d+          }$|$                    d,d-           |                     |$           |                    d.          }%|                     |%           t+           |
|                    D ]\  }}|                    d/          }&tE                      }'|                     |&           |D ]}|#                    d0          }(5j	                            |(d                   }|(d         |'vrE|                    |(d                   |'|(d         <   |&                    |'|(d                             |'                    |(d                   })t-          ||(d                   }t          |t          j	        j$                  r|rt          t                    |j%                 j	        D ]V}*|*d1k    r|j&        |)_        tO          ||*          r1|)                    |*tQ          t-          ||*                               W|)                    d2|j)                   qt          |t          j	        j*        t          j	        j+        f          ru|rq|)                    d2|j)                   |D ]S}+|                    d3          },|,                    d4|+j,                   |+j&        |,_        |)                    |,           Tt          |t          j	        j-                  rA|9|j.                            |d          |)_        |)                    d2|j)                   vtQ           |||                    |)_        |)                    d2||                    |$                    d5tQ          |                     |$                    d6tQ          |                     |/                    |0                    |                     n|d7k    rdd8l1m2}- dd9l3m4}. dd:l3m5}/ dd;l3m6}0 |-7                                }1| d<}|1j8        }2d=|2_9        g }t+           |
|                    D ]\  }}g }|D ]}|dk    rW|                    |                    |                     |dv r+|                    |                    |           d            |||          }t-          5|d          }|                     7||                     |dv rC|                     7 |||                    d          }|                    |j                   |dk    r|2                    |           |2                    |           |1:                    |           ntw          d>|           t#          |d?          5 }36<                                5  |	=                    |3d@d@A           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )CzN
    https://bcrm.carbonsoft.ru/project/Document/DOC-007693#spec-007668-b
    r   N)r   )r   returnc                                         | j                  }| j        }t          |t          j        j                  o| j        }t          |t          j        j                  o| j	        }t          |t          j        j                  o| j
        }t          |t          j        j                  o| j        }t
          j                            || j        || j        ||d|d	  	        S )NreadF)	initial_acl_keyobject_modelobject_owner_id	object_idobject_parent_idobject_dictaccess_levelperm_security_level_allowed_idsraise_error)get_model_by_namer   __dict__
issubclasscmfr   	CmfEntityperm_effective_acl_idCmfModelcmf_owner_id	parent_id%perm_security_level_allowed_ids_cacheCmfAccessListcheck_accessr   )objmodelobj_dictr*   obj_owner_idobj_parent_idr<   r   s          r"   check_access_objz*export2file_task.<locals>.check_access_obj5   s    ))#.99<$UCJ,@AA_cF_!%)<==R#BR"5#**=>>P3=0:5#*BV0W0W  1F\_  ]F-#00+#.Zff}(,Q_d	 1 
 
 	
    c              3      K   d}d}d| vrdg| z   } g d}	                      |||z   g| |z   	
          }|sd S ||z  }|D ]} |          r|V  @)Nr   iP  z--)r:   access_authorcmf_author_idperm_security_level_idaccess_responsibleresponsible_id
spectators	executors
project_idr;   r8   r<   T)filterslicefieldsr   r   )slist)rQ   startstepsecurity_fieldsdatarowr   rD   clsr   r   s         r"   paginate_dataz'export2file_task.<locals>.paginate_dataD   s      vVf_F
 
 

	99C$)54<#8$*_$<.>&.	  0 0D
  TME  ##C(( III	rE   c                    | dS t          | d          rt          | j                  S t          | d          rt          | j                  S t	          | t
                    r!d                    fd| D                       S |rKt          |t          j	        j
        t          j	        j        f          r|j                            | |           S | rt          |           ndS )N r
   r   ,c                 &    g | ]} |          S  r^   ).0rW   convert_vals     r"   
<listcomp>z9export2file_task.<locals>.convert_val.<locals>.<listcomp>d   s#    ===#[[--===rE   )hasattrstrr
   r   
isinstancelistjoinr5   r6   rQ   CmfChoiceInt	CmfChoicechoicesget)val	field_objr`   s     r"   r`   z%export2file_task.<locals>.convert_val\   s    ;2S&!! 		+sx== S$ 	+sv;;T"" 	+88=======>>> 	+:i#*2I3:K_1`aa 	+$((c222"*3s888*rE   c                 v    |                     d          D ]"}t          | |          rt          | |          } #| S )u   
        Получить поле объекта. Как getattr, только работает с вложенными полями
        Например: get_included_attr(doc, 'person.second_name')
        r   )splitrb   getattr)r?   	field_strfields      r"   get_included_attrz+export2file_task.<locals>.get_included_attrj   sF    
 __S)) 	* 	*EsE"" *c5))
rE   fields_namec                 @    fdi }| D ]} |          ||<   |S )Nc           
         |                     d          }| j                            |d                   }|}t          t	          t
                              }t          j        j        |d<   |r|j        }t          |          dk    rqt          |d          r|j        r|j        d         }nt          |d          r|j        }n|S | d ||         d                    |dd                               }|S )Nr   r   r7      r   r@   )rn   rQ   rj   copyvarsr   r6   r7   captionlenrb   r@   rf   )	class_obj
field_namepural_namesrq   res
models_cls
model_nameget_captions          r"   r   z;export2file_task.<locals>.get_captions.<locals>.get_captionv   s   $**3//K$((Q88ECd6ll++J&)j&:J{# 	dm{##a''uh// #EL #%*\!_

 00 #%*[

"
 cc;;z*/EsxxP[\]\^\^P_G`G`#a#accCJrE   r^   )rs   r~   r|   r   rX   s      @r"   get_captionsz&export2file_task.<locals>.get_captionsu   sO    	 	 	 	 	$ % 	; 	;J)k#z::C
OO
rE   c                 *    g | ]}|j         	|j        S r^   )visibler   )r_   rq   s     r"   ra   z$export2file_task.<locals>.<listcomp>   s"    ZZZEEMZu'ZZZrE   timetracker_historyzop_gantt_task.actual_workz.nameuG   Журнал работ.Фактические трудозатратыr   z/export.csvzw+r[   )newline;")	delimiter	quotecharquoting)textresult_textu    без htmllxmlxml)ElementTree)Pathz
export.xmlrssversionz0.92channeltitleEvaTeamlinkr$   u+   XML представление данныхlanguagezru-rutaskrS   0
build_infoitemr   r
   ry   valuer   endtotalxlsx)workbook)open_workbook)XL_CELL_DATE)xldate_as_tuplez/export.xlsxu   Выгрузкаu7   Это формат не поддерживается: rbF)backupmake_preview)N)>bs4r   r   rx   r   r   rj   boolre   rQ   valuesr5   r6   
CmfRelBaseappendtempfileTemporaryDirectoryopenr   writerQUOTE_MINIMAL	enumeratero   BeautifulSoupr   writerow	xml.etreer   pathlibr   Elementsetrequestr   dictrn   CmfRelationBaser   r
   rb   rc   ry   
CmfM2MBaseCmfBackrefBaser   rg   ri   write_bytestostringopenpyxlr   xlrdr   r   r   Workbookactiver   r   	Exceptionr   upload_stream_file)8r   res_attachment_idr   r   r   r   r   _kwargsr   r!   rY   rr   r   
new_fieldsr|   captionstmpdir	file_pathcsvfiler   r   csv_headirW   csv_rowrq   field_valuerl   soupETr   r   r   r   r   r$   r   r   r   elementsr}   
field_infokeyvr   r   r   r   r   	book_xlsx
sheet_xlsxfrD   rX   r   r`   s8      ` ``                                             @@@@r"   r   r   $   sL    JJJ######
v,,z
"C%))->)??J
 
 
 
 
 
 
        0+ + + + + +	 	 	$      0  [ZZSZ5F5F5H5HZZZJ! & &
...4JJZ^^J'' 	"Jsz~~j7Q7QSVS]Sh,i,i 	"'!J*%%%%K|K((H"h..0y,-		$	&	& QS&%!...Iir222 -g


Gs.13;L $ N N'k(B(BCC - -FAs G!, 6 666$OOHLL,?,?@@@$(??? (8<<3F3F0T0T0T U U U&7&7U&C&C$+C$=$=	{{;	'J'JKKK $;;;#&#4#4[[ARARSVX]A^A^5_5_ag#h#hD#NN49555Avv111OOG,,,,)-- - - - - - - - - - - - - - -6 E!!333333$$$$$$VL11I**U##CGGIv&&&jj++GJJwJJw''E"EJNN5!!!::f%%DDINN4   **]33KLKNN;'''**Z00K&KNN;'''::f%%DHHWc"""NN4   L11JNN:&&&#MM+$>$>?? $H $H3zz&))66t$$$"-  H  HJ","2"23"7"7KJNN;q>::E&q>X5535::k!n3M3MQ0H[^$<===!)k!n!=!=J")#k!n"="=K!%)CDD H& E'+F||K4J'K'R X X#&&==6A6FJO$,#*;#<#< !X$.NN3GKQT<U<U8V8V$W$W$W&NN9emDDD#ECJ,A3:C\+]^^ H& 9&NN9emDDD%0 9 9(*

7(;(; %		$ 5 5 5-.V
 * 1 1% 8 8 8 8#E3:+BCC H&.$*/-*;*;K*L*L
"y%-@@@@*-.?.?Z.P.P*Q*Q
"y(:2FGGGGA HD HHUCFF###HHWc!ff%%%!!"++c"2"23333F"" *)))))******)))))),,,,,, ))++I!///I")J1JH#MM+$>$>?? + +3( 2 2EAvv U(;(;<<< $;;;$OOx||E/B/B,P,P,PQQQ"3"3C"?"?K 'UD 9 9INN;;{I#F#FGGG 777"00=N=NsTY=Z=Z1[1[]cddty11166%%h///!!'****NN9%%%% cVaccddd)T"" 	Sa $$&& S S--aE-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[QS QS QS QS QS QS QS QS QS QS QS QS QS QS QS QS QS QSs   h*,EK	h*K	h*K	[$h*hg;/h;g??hg?hh*h	h*h	h**h.1h.)NNNr   FN)NNr   FN)
r   
cmf.configr   
cmf.fieldsr6   rw   r   r#   cmf_deferred_jobr   r^   rE   r"   <module>r      s                        6 G]abbb "&!&&+"HS HS HS cbHS HS HSrE   