
    pA:j>-                     X    d dl Z d dlmZ d dl d dlmZ  G d dej                        Zy)    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                  j                  dd| g|      D ]  } |j                  |d|i|  t	        |   |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   se    ,,11(D$9Oaq1r 	KCCJJJ/?J6J	Kw~tQ6FQ&QQ    all_optionsmodels_filtersc                 |    |sg }|dk(  r|xr |j                  dd       }	|	r|dd|	gg}t        
|   |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   so     F"55"K}'8'8d'KF ;f"=>w)*= QfZe8EQIOQ 	Qr   returnc                   (DEFGH 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}t$        j&                  j)                  d| j*                  d||||d| | j,                  | j.                  d	d
       g d}| j1                  g d       | j2                  j4                  }| j6                  j4                  }d }| j8                  }|rdd|ggng }|r | |d      z   }|j;                  dd|g       t$        j<                  j?                         }|dk(  rdnd}d }|rdd|gf}tA        |j4                        r|r|d   d   j;                  |d|g       tB        jE                  | jF                  jH                  jB                        g}|r|j;                  |       dg|z   }t$        jJ                  jM                  ||      }dd|gdd|gdd|gdd|gg}|D  cg c]	  } d | vs|  }!} |!j;                  g d       dg|!z   }"tA        |j4                        r|"j;                  |d|g       t$        jN                  jM                  |"g d       }#tQ        ||      r|j                         }tQ        ||      r|j                         }|stS        d!        |       }$|$jU                  d"      HHjW                  ddd#       HjY                  d |d$%             HjW                  dd&d'       HjY                  d& |d(%             HjW                  dd)d*       HjY                  d) |d+%             HjW                  dd,d-       HjY                  d, |d.%             HjW                  dd/d0       HjY                  d/ |d1%             HjW                  dd2d3       HjY                  d2 |d4 |
|jZ                        5             d6}%g }&|xs |j]                         j                         }|r ||||7      }&n |||d89      }&|&D ]B  }'HjW                  d|%|'j_                  d:             HjY                  |% |d1%             |%dz  }%D ta        |D (cg c]  }(|(jb                  j4                   c}(      })t$        jd                  jM                  d;d|)gdd<g      }*d}+tg               },d}-|*D ]s  DDjh                  jj                  j4                  gDjl                  j4                  D .cg c]  }.|.jj                  j4                   c}.z   }/|jj                  j4                  |/v }0to        Dfd=|      }1|1D (cg c]  }(|(jj                  j4                   c}(EtM        to        Efd>|#            }2tA        |2      dk(  r|-}3HjW                  |3dDj,                         HjW                  |3d/Dj.                         |-dz  }-i }4|2D ]/  }5|5jp                  |4|5jp                  jj                  j4                  <   1 |4D ]'  }6|-}7|4|6   FtM        to        Ffd?|2            }8|8D 5cg c]  }5|5jb                  j4                   c}5GtM        to        Gfd@|            }9HjW                  |7d&Fj,                         HjW                  |7dDj,                         |-dz  }-dA }:ts        |9|:B      D ]v  (HjW                  |-d&Fj,                         HjW                  |-dDj,                         (jt                  j4                  rT(jt                  j4                  jv                  dCk(  r1HjW                  |-d)(jt                  j,                  j4                         (jv                  dCk(  r(HjW                  |-d)(j,                  j4                         nHjW                  |-d,(j,                         HjW                  |-d/(j.                         tM        to        (fdD|8            };|;D ];  }5|5jx                  j4                  j                         }<|<|z
  jz                  d6z   }=HfdE}> |>|-|=|5j|                  j4                          |>|3|=|5j|                  j4                          |>|7|=|5j|                  j4                          |>|-d2|5j|                  j4                          |>|3d2|5j|                  j4                          |>|7d2|5j|                  j4                         |+|5j|                  j4                  dFz  z  }+|<|,vrd|,|<<   |,|<xx   |5j|                  j4                  dFz  z  cc<   > |-dz  }-y * v d6}%HjW                  |-ddG       HjW                  |-d2|+       |&D ]P  }'HjY                  |% |dH%             HjW                  |-|%|,j                  |'j                                      |%dz  }%R t$        j                  | j,                   dI| j.                   dI|j]                  |j                        dJdK| t        j                  L      }?t        j                         5  |?j                          d d d        |j                         5 }@t        |@      |?jj                  j4                  z  }A|dMk(  rAj                  dN      5 }Bt        j                  |B      j                  t        Hj                        D C%cg c];  }Ct        Hj                        D %cg c]  }%Hj                  Cdz   |%dz          c}%= c}%}C       d d d        n|$j                  A       t        AdO      5 }Bt        j                         5  |?j                  Bd
d
P       d d d        d d d        d d d        |?j                  S c c} w c c}(w c c}.w c c}(w c c}5w # 1 sw Y   _xY wc c}%w c c}%}Cw # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   fxY w# 1 sw Y   |?j                  S xY w)QNr   )WorkbookColorStyleFontFillFormat)numbers)date	timedeltadatetimetimezone)rruleDAILYexportr   )typehistory_typebqlfieldsformat_fileokF)operatecmf_model_name
audit_datar   parent_nameparent_coderesult_statusignore_transaction)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_prefixrH   ft_responsible)
date_startdate_endzreport_bql_filter.bqlreport_typerN   
start_datez>=   )days<fact
cmf_author	cmf_ownertimetracker_historyEXISTS   INAND)r   r:   r   r8   =)
time_spentz!=N)r   zparent.parentrW   rR   r_   u)   Нет задач для экспортаu   Задачиu   Проект   )size   u   Пользователь(      u   Эпик      u   Задача2      u   Код      u   Часы работы   )ra   format   )dtstartuntilim  )rn   countz%Y-%m-%didcmf_owner_assistantsc                 ^    | j                   j                  j                  j                  k(  S Nr   valuerq   )taskprojects    r   <lambda>z+CmfTaskReport.export_time.<locals>.<lambda>   s     0D0D

HXHX0X r   c                 4    | j                   j                  v S rt   )r   rv   )recordproject_tasks_idss    r   ry   z+CmfTaskReport.export_time.<locals>.<lambda>   s    9I9I9O9OSd9d r   c                 r    | j                   j                  j                  j                  j                  k(  S rt   )rW   rq   rv   )r{   users    r   ry   z+CmfTaskReport.export_time.<locals>.<lambda>   s+    &:K:K:N:N:T:TX\X_X_XeXe:e r   c                 4    | j                   j                  v S rt   )rq   rv   )rw   user_tasks_idss    r   ry   z+CmfTaskReport.export_time.<locals>.<lambda>   s    dggmm~6U r   c                     | j                   j                  rP| j                   j                  j                  dk(  r-| j                   j                  j                  | j                  z   S | j                  S )N	task.epic)parent_taskrv   rM   rE   )rw   s    r   
tasks_sortz-CmfTaskReport.export_time.<locals>.tasks_sort   sV    ''--$2B2B2H2H2U2UYd2d#//44::TYYFF99$r   )keyr   c                 ^    | j                   j                  j                  j                  k(  S rt   ru   )r{   rw   s    r   ry   z+CmfTaskReport.export_time.<locals>.<lambda>   s%    f>N>N>T>TX\X_X_XeXe>e r   c                 p    j                  | |      }|s|dz  }n||dz  z  }j                  | ||       y )N<   )get_cell_valueset_cell_value)xy	new_valuerv   wss       r   update_cellz.CmfTaskReport.export_time.<locals>.update_cell   sA    $&$5$5a$;E#((1B %R 7--aE:r   r   u   Всего:
   -z%Y%m%d-%H%M%S.)rE   r   csvwrb)backupsave_preview)Spyexcelerater)   r*   r+   r,   r-   r.   openpyxl.stylesr/   r2   r0   r1   r3   dateutil.rruler4   r5   ostempfiler   CmfAuditaudit_event
class_namerE   rD   load_fieldsrO   rv   rP   rN   append	CmfPersonget_current_userlenjsonloadsr   r9   CmfTaskr   CmfTimeTrackerHistory
isinstance	cmf_alert	new_sheetr   set_col_styleFORMAT_NUMBER_00nowstrftimesetr   
CmfProjectdictrX   rq   rr   r   rW   sortedr   rM   rR   rT   r_   r"   CmfAttachmentutcgcurrent_personcmfutildisable_aclsaveTemporaryDirectoryr   openr   writer	writerowsrangenum_rowsnum_columnsr   upload_stream_fileurl)Ir   r8   r9   r:   r;   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r   r   rR   end_dateend_date_filterrK   !timetracker_history_exists_filterr   field_name_filter_resphistory_restrictprepare_task_filtertasks_filtertasks
conditions	conditionfiltered_conditionsrecords_filterrecordswbcoldatesdrw   project_idsprojectsitogs_total_time_spentitogsnum	assistant
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frowrx   r|   r~   r   r   sI                                           `                           @@@@@r   r   zCmfTaskReport.export_time#   s   KK+@@/##HT__$1,WZ&,[J		Y]rw 	$ 	y

( 	mn__**
==&&))R\lD*-M,Nbd)&)::O-44lC5YZ))::<1=1G[, 5xAbcd{  !&6Aq!((*@$)TU#zz$*@*@*D*D*I*IJK&&'78w!44##<#G tU#4,30S,/	

 ;E^YT]H]y^^""#=>#66{  !  "8$!LM..33!X 4 Z j(+#*Jh)}}HAB Z\\.)
!Q/
ErN+
!Q :;
ErN+
!Q
+
ErN+
!Q/
ErN+
!Q)
ErN+
!Q 78
Er&9Q9Q2RST88<<>#6#6#8
%8DE%3?E 	Aaajj&<=S%R.11HC	
 EBD4>>//BC$$))$k1JT_awSx)y!" P	G!++..445]d]y]y]]  9APY9K9K  9A  AJ%((..*<H"#XZ_`M;H I4 I #6*dfm#noO?#q(LlAw||<lAw||<1HCM) N<B<M<Mf//22889N % :	$S)#F+egv$wxGS!TV&"2"2"8"8!T!&)UW\"]^
!!)Q		:!!)Q=q% #::> )D%%c1dii8%%c1gll;''--$2B2B2H2H2U2UYd2d))#q$2B2B2G2G2M2MN((K7))#q$))//B))#q$))<%%c1dii8 $(/egs(t#uL". I$*$5$5$;$;$@$@$B	#,z#9"?"?!"C; $C&2C2C2I2IJ#L'6;L;L;R;RS#Iw8I8I8O8OP#CF,=,=,C,CD#L!V5F5F5L5LM#Iq&2C2C2I2IJ.&2C2C2I2IB2NN.$E1/0E),i(F,=,=,C,Cb,HH(/I2 1HCS)#:-P	d 
#q-0
#q"89 	AS%R.1c3		!&&((;<1HC	 ))$))Adii[(,,W_WcWcJderIsst  vA  uB  0C121A1A * C
   " 	OO	((* 	WhX)<)<<Ie#^^C( AJJqM++ (-R[['9 # MRRTR`R`LabSR..sQwa@b  	"i& W!((* W11!EPU1VWW	W" ~~Q _d C 9A !J* "UF	 	 c W WW W	W" ~~s   '	m61m6!m;7n n+n
!n
9o7n':n!n5n!:n'&o(n?=n3n?onn!!n''n0	,o3n<8n??o	oo)NNNFNN)rV   NNN)__name__
__module____qualname__r   r   api_methodsr   classmethodboolr   r#   strr   __classcell__)r   s   @r   r   r      si    !//;;?
 
K .3 R
 VZKOQQ7;Q Q o[^ or   r   )r   pathlibr   cmf.includecommon.fieldsr   r    r   r   <module>r      s%    
   )JO11 Jr   