
    Eh+                     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}g d}| j%                  g d       | j&                  j(                  }| j*                  j(                  }d }| j,                  }|rdd	|ggng }|r | |d
      z   }|j/                  dd|g       t0        j2                  j5                         }|dk(  rdnd}d }|rdd|gf}t7        |j(                        r|r|d   d   j/                  |d|g       t8        j;                  | j<                  j>                  j8                        g}|r|j/                  |       dg|z   }t0        j@                  jC                  ||      }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   }"t7        |j(                        r|"j/                  |d|g       t0        jD                  jC                  |"g d      }#tG        ||      r|j                         }tG        ||      r|j                         }|stI        d        |       }$|$jK                  d      HHjM                  d
dd       HjO                  d |d             HjM                  d
d d!       HjO                  d  |d"             HjM                  d
d#d$       HjO                  d# |d%             HjM                  d
d&d'       HjO                  d& |d(             HjM                  d
d)d*       HjO                  d) |d+             HjM                  d
d,d-       HjO                  d, |d. |
|jP                        /             d0}%g }&|xs |jS                         j                         }|r ||||1      }&n |||d23      }&|&D ]B  }'HjM                  d
|%|'jU                  d4             HjO                  |% |d+             |%d
z  }%D tW        |D (cg c]  }(|(jX                  j(                   c}(      })t0        jZ                  jC                  d5d|)gdd6g      }*d}+t]               },d}-|*D ]s  DDj^                  j`                  j(                  gDjb                  j(                  D .cg c]  }.|.j`                  j(                   c}.z   }/|j`                  j(                  |/v }0te        Dfd7|      }1|1D (cg c]  }(|(j`                  j(                   c}(EtC        te        Efd8|#            }2t7        |2      dk(  r|-}3HjM                  |3dDjf                         HjM                  |3d)Djh                         |-d
z  }-i }4|2D ]/  }5|5jj                  |4|5jj                  j`                  j(                  <   1 |4D ]'  }6|-}7|4|6   FtC        te        Ffd9|2            }8|8D 5cg c]  }5|5jX                  j(                   c}5GtC        te        Gfd:|            }9HjM                  |7d Fjf                         HjM                  |7dDjf                         |-d
z  }-d; }:tm        |9|:<      D ]v  (HjM                  |-d Fjf                         HjM                  |-dDjf                         (jn                  j(                  rT(jn                  j(                  jp                  d=k(  r1HjM                  |-d#(jn                  jf                  j(                         (jp                  d=k(  r(HjM                  |-d#(jf                  j(                         nHjM                  |-d&(jf                         HjM                  |-d)(jh                         tC        te        (fd>|8            };|;D ];  }5|5jr                  j(                  j                         }<|<|z
  jt                  d0z   }=Hfd?}> |>|-|=|5jv                  j(                          |>|3|=|5jv                  j(                          |>|7|=|5jv                  j(                          |>|-d,|5jv                  j(                          |>|3d,|5jv                  j(                          |>|7d,|5jv                  j(                         |+|5jv                  j(                  d@z  z  }+|<|,vrd|,|<<   |,|<xx   |5jv                  j(                  d@z  z  cc<   > |-d
z  }-y * v d0}%HjM                  |-d
dA       HjM                  |-d,|+       |&D ]P  }'HjO                  |% |dB             HjM                  |-|%|,jy                  |'j                                      |%d
z  }%R t0        j{                  | jf                   dC| jh                   dC|jS                  |j|                        dDdE| t~        j                  F      }?t        j                         5  |?j                          d d d        |j                         5 }@t        |@      |?j`                  j(                  z  }A|dGk(  rAj                  dH      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        AdI      5 }Bt        j                         5  |?j                  BdJdJK       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)LNr   )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_typer@   
start_datez>=   )days<fact
cmf_author	cmf_ownertimetracker_historyEXISTS   INAND)r   fieldsr   history_type=)
time_spentz!=N)r   zparent.parentrI   rD   rS   u)   Нет задач для экспортаu   Задачиu   Проект   )size   u   Пользователь(      u   Эпик      u   Задача2      u   Код      u   Часы работы   )rU   format   )dtstartuntilim  )rb   countz%Y-%m-%didcmf_owner_assistantsc                 ^    | j                   j                  j                  j                  k(  S Nr   valuere   )taskprojects    r   <lambda>z+CmfTaskReport.export_time.<locals>.<lambda>   s     0D0D

HXHX0X r   c                 4    | j                   j                  v S rh   )r   rj   )recordproject_tasks_idss    r   rm   z+CmfTaskReport.export_time.<locals>.<lambda>   s    9I9I9O9OSd9d r   c                 r    | j                   j                  j                  j                  j                  k(  S rh   )rI   re   rj   )ro   users    r   rm   z+CmfTaskReport.export_time.<locals>.<lambda>   s+    &:K:K:N:N:T:TX\X_X_XeXe:e r   c                 4    | j                   j                  v S rh   )re   rj   )rk   user_tasks_idss    r   rm   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_taskrj   r?   r7   )rk   s    r   
tasks_sortz-CmfTaskReport.export_time.<locals>.tasks_sort   sV    ''--$2B2B2H2H2U2UYd2d#//44::TYYFF99$r   )keyrv   c                 ^    | j                   j                  j                  j                  k(  S rh   ri   )ro   rk   s    r   rm   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_valuerj   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.)r7   r   csvwrbF)backupsave_preview)Ppyexcelerater)   r*   r+   r,   r-   r.   openpyxl.stylesr/   r2   r0   r1   r3   dateutil.rruler4   r5   ostempfileload_fieldsrA   rj   rB   r@   appendr   	CmfPersonget_current_userlenjsonloadsr   bqlCmfTaskr   CmfTimeTrackerHistory
isinstance	cmf_alert	new_sheetr~   set_col_styleFORMAT_NUMBER_00nowstrftimesetr   
CmfProjectdictrJ   re   rf   r   r7   r6   rI   sortedrw   r?   rD   rF   rS   r"   CmfAttachmentutcgcurrent_personcmfutildisable_aclsaveTemporaryDirectoryr   openr   writer	writerowsrangenum_rowsnum_columnsr}   upload_stream_fileurl)Ir   rQ   r   rP   format_filer)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r   r   rD   end_dateend_date_filterr=   !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drk   project_idsprojectsitogs_total_time_spentitogsnum	assistant
owners_idsis_ownerproject_tasksproject_recordsproject_lineproject_usersro   ry   	user_lineuser_records
user_tasksrx   task_records	hist_datecol_numr   
attachmenttemp_dir	file_pathfrowrl   rp   rr   rt   r   sI                                           `                           @@@@@r   r   zCmfTaskReport.export_time#   s
   KK+@@/
( 	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   	l+&l+l0,l59l: l?m?9n 87m/mm*m/m7&n m42m(m4n mmmm%	!n (m1-m44m=	9n  n)NNNFNN)rH   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 j[^ jr   r   )r   pathlibr   cmf.includecommon.fieldsr   r    r   r   <module>r      s%    
   )EO11 Er   