
    bh+                     T    d dl Z d dlmZ d dlT d dlmZ  G d dej                  ZdS )    N)Path)*)cmf_task_reportc                   |     e Zd Zej        j        dgz   Zdd fd
Ze	 	 ddede	f fd            Z
dd
efdZ xZS )CmfTaskReportexport_timeF)TEXKOM_db_deletec                    t           j                            dd| g|          D ]} |j        |d|i|  t	                      j        |d|i|S )Nparent==)filterinclude_deletedr	   )modelsCmfRepLineChartRowlistdeletesuper)selfr	   argskwargsobj	__class__s        "./common/models/cmf_task_report.pyr   zCmfTaskReport.delete   ss    ,11(D$9Oaq1rr 	K 	KCCJJ/?J6JJJJuww~tQ6FQ&QQQ    Nall_optionsmodels_filtersc                     |sg }|dk    r!|o|                     dd           }	|	r|dd|	gg} t                      j        |f|||d|S )Nreport_bql_filter	parent_idr   )r   models_listobject_fields)getr   field_options_list)clsrelation_field_name	object_idr!   r    r   r   r   r   r   r   s             r   r#   z CmfTaskReport.field_options_list   s      	F"555"K}'8'8d'K'KF ? ;f"=>)uww)*= QfZe8EQ QIOQ Q 	Qr   factreturnc           	        @ABCDE ddl m}m}m}m}m}	m}
 ddlm} ddl	m
}m}m	}m} ddlm}m} dd l}dd l}g d}|                     g d           | j        j        }| j        j        }d }| j        }|rdd	|ggng }|r'| |d
          z   }|                    dd|g           t0          j                                        }|dk    rdnd}d }|rdd|gf}t7          |j                  r&|r$|d         d                             |d|g           t8                              | j        j        j                  g}|r|                    |           dg|z   }t0          j         !                    ||          }dd|gdd	|gdd|gdd|gg}d |D             } |                     g d           dg| z   }!t7          |j                  r|!                    |d|g           t0          j"        !                    |!g d          }"tG          ||          r|
                                }tG          ||          r|
                                }|stI          d            |            }#|#%                    d          EE&                    d
dd           E'                    d |d                      E&                    d
d!d"           E'                    d! |d#                      E&                    d
d$d%           E'                    d$ |d&                      E&                    d
d'd(           E'                    d' |d)                      E&                    d
d*d+           E'                    d* |d,                      E&                    d
d-d.           E'                    d- |d/ |
|j(                  0                     d1}$g }%|p%|)                                
                                }|r ||||2          }%n |||d34          }%|%D ]Q}&E&                    d
|$|&*                    d5                     E'                    |$ |d,                      |$d
z  }$RtW          d6 |D                       }'t0          j,        !                    d7d|'gdd8g          }(d})t[                      }*d}+|(D ]@@j.        j/        j        gd9 @j0        j        D             z   },|j/        j        |,v }-tc          @fd:|          }.d; |.D             AtC          tc          Afd<|"                    }/t7          |/          dk    r|+}0E&                    |0d@j2                   E&                    |0d*@j3                   |+d
z  }+i }1|/D ]}2|2j4        |1|2j4        j/        j        <   |1D ]}3|+}4|1|3         CtC          tc          Cfd=|/                    }5d> |5D             DtC          tc          Dfd?|                    }6E&                    |4d!Cj2                   E&                    |4d@j2                   |+d
z  }+d@ }7tk          |6|7A          D ]BE&                    |+d!Cj2                   E&                    |+d@j2                   Bj6        j        r;Bj6        j        j7        dBk    r&E&                    |+d$Bj6        j2        j                   Bj7        dBk    r"E&                    |+d$Bj2        j                   nE&                    |+d'Bj2                   E&                    |+d*Bj3                   tC          tc          BfdC|5                    }8|8D ]}2|2j8        j        
                                }9|9|z
  j9        d1z   }:EfdD}; |;|+|:|2j:        j                    |;|0|:|2j:        j                    |;|4|:|2j:        j                    |;|+d-|2j:        j                    |;|0d-|2j:        j                    |;|4d-|2j:        j                   |)|2j:        j        dEz  z  })|9|*vrd|*|9<   |*|9xx         |2j:        j        dEz  z  cc<   |+d
z  }+d1}$E&                    |+d
dF           E&                    |+d-|)           |%D ]c}&E'                    |$ |dG                      E&                    |+|$|*;                    |&
                                                     |$d
z  }$dt0          <                    | j2         dH| j3         dH|)                    |j=                  dIdJ| t|          j?        K          }<t          A                                5  |<B                                 d d d            n# 1 swxY w Y   |C                                5 }=t          |=          |<j/        j        z  }>|dLk    rs|>E                    dM          5 }?t          jG        |?          H                    EfdNt          EjJ                  D                        d d d            n# 1 swxY w Y   n|#B                    |>           t          |>dO          5 }?t          A                                5  |<K                    |?dPdPQ           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            n# 1 swxY w Y   |<jL        S )RNr   )WorkbookColorStyleFontFillFormat)numbers)date	timedeltadatetimetimezone)rruleDAILY)codenamecache_status_typeprioritycmf_created_atcmf_modified_at
alarm_dater   zparent.nameresponsiblezresponsible.nameepicz	epic.namelogic_prefixzparent_task.namezparent_task.logic_prefixr;   ft_responsible)
date_startdate_endzreport_bql_filter.bqlreport_typerA   
start_datez>=   )days<r'   
cmf_author	cmf_ownertimetracker_historyEXISTS   INAND)r   fieldsr   history_type=c                     g | ]}d |v|	S N ).0	conditions     r   
<listcomp>z-CmfTaskReport.export_time.<locals>.<listcomp>e   s#    ^^^YT]H]H]yH]H]H]r   )
time_spentz!=N)r   zparent.parentrI   rE   rY   u)   Нет задач для экспортаu   Задачиu   Проект   )size   u   Пользователь(      u   Эпик      u   Задача2      u   Код      u   Часы работы   )r[   format   )dtstartuntilim  )rh   countz%Y-%m-%dc                 &    g | ]}|j         j        S rU   r   valuerV   tasks     r   rX   z-CmfTaskReport.export_time.<locals>.<listcomp>   s    BBBD4>/BBBr   idcmf_owner_assistantsc                 &    g | ]}|j         j        S rU   rp   rm   )rV   	assistants     r   rX   z-CmfTaskReport.export_time.<locals>.<listcomp>   s0      9A  9A  9APY9K  9A  9A  9Ar   c                 8    | j         j        j        j        k    S rT   r   rm   rp   )ro   projects    r   <lambda>z+CmfTaskReport.export_time.<locals>.<lambda>   s    0D
HX0X r   c                 &    g | ]}|j         j        S rU   rs   rn   s     r   rX   z-CmfTaskReport.export_time.<locals>.<listcomp>   s     I I I4 I I Ir   c                      | j         j        v S rT   rl   )recordproject_tasks_idss    r   rx   z+CmfTaskReport.export_time.<locals>.<lambda>   s    9I9OSd9d r   c                 B    | j         j        j        j        j        k    S rT   )rI   rp   rm   )r{   users    r   rx   z+CmfTaskReport.export_time.<locals>.<lambda>   s    &:K:N:TX\X_Xe:e r   c                 &    g | ]}|j         j        S rU   rl   )rV   r{   s     r   rX   z-CmfTaskReport.export_time.<locals>.<listcomp>   s    !T!T!TV&"2"8!T!T!Tr   c                      | j         j        v S rT   rs   )ro   user_tasks_idss    r   rx   z+CmfTaskReport.export_time.<locals>.<lambda>   s    dgm~6U r   c                     | j         j        r.| j         j        j        dk    r| j         j        j        | j        z   S | j        S )N	task.epic)parent_taskrm   r@   r8   )ro   s    r   
tasks_sortz-CmfTaskReport.export_time.<locals>.tasks_sort   sC    '- G$2B2H2UYd2d2d#/4:TYFF9$r   )keyr   c                 8    | j         j        j        j        k    S rT   rv   )r{   ro   s    r   rx   z+CmfTaskReport.export_time.<locals>.<lambda>   s    f>N>TX\X_Xe>e r   c                                          | |          }|s|dz  }n||dz  z  }                    | ||           d S )N<   )get_cell_valueset_cell_value)xy	new_valuerm   wss       r   update_cellz.CmfTaskReport.export_time.<locals>.update_cell   sW    $&$5$5a$;$;E#( 8(1B %R 7--aE:::::r   r   u   Всего:
   -z%Y%m%d-%H%M%S.)r8   r   csvwc                 T    g | ]#fd t          j                  D             $S )c                 H    g | ]}                     d z   |d z             S )rF   )r   )rV   colrowr   s     r   rX   z8CmfTaskReport.export_time.<locals>.<listcomp>.<listcomp>  s1    bbbSR..sQwa@@bbbr   )rangenum_columns)rV   r   r   s    @r   rX   z-CmfTaskReport.export_time.<locals>.<listcomp>  sN        # cbbbbERTR`LaLabbb  r   rbF)backupsave_preview)Mpyexcelerater*   r+   r,   r-   r.   r/   openpyxl.stylesr0   r3   r1   r2   r4   dateutil.rruler5   r6   ostempfileload_fieldsrB   rm   rC   rA   appendr   	CmfPersonget_current_userlenjsonloadsr   bqlCmfTaskr   CmfTimeTrackerHistory
isinstance	cmf_alert	new_sheetr   set_col_styleFORMAT_NUMBER_00nowstrftimeset
CmfProjectdictrJ   rp   rq   r   r8   r7   rI   sortedr   r@   rE   rG   rY   r"   CmfAttachmentutcgcurrent_personcmfutildisable_aclsaveTemporaryDirectoryr   openr   writer	writerowsr   num_rowsupload_stream_fileurl)Fr   rQ   r   rP   format_filer*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r   r   rE   end_dateend_date_filterr>   !timetracker_history_exists_filterr   field_name_filter_resphistory_restrictprepare_task_filtertasks_filtertasks
conditionsfiltered_conditionsrecords_filterrecordswbr   datesdproject_idsprojectsitogs_total_time_spentitogsnum
owners_idsis_ownerproject_tasksproject_recordsproject_lineproject_usersr{   r   	user_lineuser_records
user_tasksr   task_records	hist_datecol_numr   
attachmenttemp_dir	file_pathfrw   r|   ro   r~   r   r   sF                                                                   @@@@@@r   r   zCmfTaskReport.export_time#   sU   KKKKKKKKKKKKKKKK++++++@@@@@@@@@@@@////////			
 
 
( 	mmmnnn_*
=&)R\,dlD*-M,N,Nbd) 	[&):):)::O-44lC5YZZZ)::<<1=1G1G[, 	e 5xAbcd{ !! 	V&6 	VAq!((*@$)TUUU#zz$*@*D*IJJK 	9&&'7888w!44##<#GG tU#4,30S,/	

 _^*^^^""#=#=#=>>>#66{ !! 	N  "8$!LMMM.33!XXX 4 Z Z j(++ 	+#**Jh)) 	'}}H 	CABBB XZZ\\.))
!Q///
EErNNN+++
!Q :;;;
EErNNN+++
!Q
+++
EErNNN+++
!Q///
EErNNN+++
!Q)))
EErNNN+++
!Q 7888
EEr&&9Q2R2RSSSTTT88<<>>#6#6#8#8
 	@E%8DDDEEE%3???E 	 	Aaajj&<&<===S%%R...1111HCCBBEBBBCC$))$k1JT_awSx)yy!" P	 P	G!+.45  9A  9A]d]y]  9A  9A  9A  AJ%(.*<H"#X#X#X#XZ_``M I I= I I I #6*d*d*d*dfm#n#nooO?##q((LlAw|<<<lAw|<<<1HCM) N N<B<Mf/2899$ : :	$S)#F+e+e+e+egv$w$wxx!T!T|!T!T!T!&)U)U)U)UW\"]"]^^
!!)Q	:::!!)Q===q% % % #::>>> ) )D%%c1di888%%c1gl;;;'- O$2B2H2UYd2d2d))#q$2B2G2MNNN(K77))#q$)/BBBB))#q$)<<<%%c1di888 $(/e/e/e/egs(t(t#u#uL". I I$*$5$;$@$@$B$B	#,z#9"?!"C; ; ; ; ; $C&2C2IJJJ#L'6;L;RSSS#Iw8I8OPPP#CF,=,CDDD#L!V5F5LMMM#Iq&2C2IJJJ.&2C2IB2NN.$E11/0E),i(((F,=,Cb,HH((((1HCCS)#:x 
#q-000
#q"8999 	 	AS%%R...111c3		!&&(((;(;<<<1HCC))$)  0C  0Cdi  0C  0C(,,W_WcJdJd  0C  0C  0C  vA  0C  0C121A * C C
   "" 	 	OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	((** 	WhX)<<Ie##^^C(( AJqMM++   ',R['9'9                   	"""i&& W!((** W W11!EPU1VVVW W W W W W W W W W W W W W WW W W W W W W W W W W W W W W	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W" ~s   -fff-8k%Ah7+k7h;	;k>h;	?)k(j>j'j>'j++j>.j+/j>2k>k	kk	kkk)NNNFNN)r'   NNN)__name__
__module____qualname__r   r   api_methodsr   classmethodboolr   r#   strr   __classcell__)r   s   @r   r   r      s        !/;?
 
K .3 R R R R R R R
 VZKOQ QQ7;Q Q Q Q Q [Q j j[^ j j j j j j j jr   r   )r   pathlibr   cmf.includecommon.fieldsr   r   rU   r   r   <module>r      s    



           ) ) ) ) ) )E E E E EO1 E E E E Er   