
    2j-                     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| d	d
       g d}| j-                  g d       | j.                  j0                  }| j2                  j0                  }d }| j4                  }|rdd|ggng }|r | |d      z   }|j7                  dd|g       t$        j8                  j;                         }|dk(  rdnd}d }|rdd|gf}t=        |j0                        r|r|d   d   j7                  |d|g       t>        jA                  | jB                  jD                  j>                        g}|r|j7                  |       dg|z   }t$        jF                  jI                  ||      }dd|gdd|gdd|gdd|gg}|D  cg c]	  } d | vs|  }!} |!j7                  g d       dg|!z   }"t=        |j0                        r|"j7                  |d|g       t$        jJ                  jI                  |"g d       }#tM        ||      r|j                         }tM        ||      r|j                         }|stO        d!        |       }$|$jQ                  d"      HHjS                  ddd#       HjU                  d |d$%             HjS                  dd&d'       HjU                  d& |d(%             HjS                  dd)d*       HjU                  d) |d+%             HjS                  dd,d-       HjU                  d, |d.%             HjS                  dd/d0       HjU                  d/ |d1%             HjS                  dd2d3       HjU                  d2 |d4 |
|jV                        5             d6}%g }&|xs |jY                         j                         }|r ||||7      }&n |||d89      }&|&D ]B  }'HjS                  d|%|'j[                  d:             HjU                  |% |d1%             |%dz  }%D t]        |D (cg c]  }(|(j^                  j0                   c}(      })t$        j`                  jI                  d;d|)gdd<g      }*d}+tc               },d}-|*D ]s  DDjd                  jf                  j0                  gDjh                  j0                  D .cg c]  }.|.jf                  j0                   c}.z   }/|jf                  j0                  |/v }0tk        Dfd=|      }1|1D (cg c]  }(|(jf                  j0                   c}(EtI        tk        Efd>|#            }2t=        |2      dk(  r|-}3HjS                  |3dDjl                         HjS                  |3d/Djn                         |-dz  }-i }4|2D ]/  }5|5jp                  |4|5jp                  jf                  j0                  <   1 |4D ]'  }6|-}7|4|6   FtI        tk        Ffd?|2            }8|8D 5cg c]  }5|5j^                  j0                   c}5GtI        tk        Gfd@|            }9HjS                  |7d&Fjl                         HjS                  |7dDjl                         |-dz  }-dA }:ts        |9|:B      D ]v  (HjS                  |-d&Fjl                         HjS                  |-dDjl                         (jt                  j0                  rT(jt                  j0                  jv                  dCk(  r1HjS                  |-d)(jt                  jl                  j0                         (jv                  dCk(  r(HjS                  |-d)(jl                  j0                         nHjS                  |-d,(jl                         HjS                  |-d/(jn                         tI        tk        (fdD|8            };|;D ];  }5|5jx                  j0                  j                         }<|<|z
  jz                  d6z   }=HfdE}> |>|-|=|5j|                  j0                          |>|3|=|5j|                  j0                          |>|7|=|5j|                  j0                          |>|-d2|5j|                  j0                          |>|3d2|5j|                  j0                          |>|7d2|5j|                  j0                         |+|5j|                  j0                  dFz  z  }+|<|,vrd|,|<<   |,|<xx   |5j|                  j0                  dFz  z  cc<   > |-dz  }-y * v d6}%HjS                  |-ddG       HjS                  |-d2|+       |&D ]P  }'HjU                  |% |dH%             HjS                  |-|%|,j                  |'j                                      |%dz  }%R t$        j                  | jl                   dI| jn                   dI|jY                  |j                        dJdK| t        j                  L      }?t        j                         5  |?j                          d d d        |j                         5 }@t        |@      |?jf                  j0                  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   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_prefixrF   ft_responsible)
date_startdate_endzreport_bql_filter.bqlreport_typerL   
start_datez>=   )days<fact
cmf_author	cmf_ownertimetracker_historyEXISTS   INAND)r   r:   r   r8   =)
time_spentz!=N)r   zparent.parentrU   rP   r]   u)   Нет задач для экспортаu   Задачиu   Проект   )size   u   Пользователь(      u   Эпик      u   Задача2      u   Код      u   Часы работы   )r_   format   )dtstartuntilim  )rl   countz%Y-%m-%didcmf_owner_assistantsc                 ^    | j                   j                  j                  j                  k(  S Nr   valuero   )taskprojects    r   <lambda>z+CmfTaskReport.export_time.<locals>.<lambda>   s     0D0D

HXHX0X r   c                 4    | j                   j                  v S rr   )r   rt   )recordproject_tasks_idss    r   rw   z+CmfTaskReport.export_time.<locals>.<lambda>   s    9I9I9O9OSd9d r   c                 r    | j                   j                  j                  j                  j                  k(  S rr   )rU   ro   rt   )ry   users    r   rw   z+CmfTaskReport.export_time.<locals>.<lambda>   s+    &:K:K:N:N:T:TX\X_X_XeXe:e r   c                 4    | j                   j                  v S rr   )ro   rt   )ru   user_tasks_idss    r   rw   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_taskrt   rK   rC   )ru   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 rr   rs   )ry   ru   s    r   rw   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_valuert   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.)rC   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_nameload_fieldsrM   rt   rN   rL   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dictrV   ro   rp   r   rC   rB   rU   sortedr   rK   rP   rR   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   rP   end_dateend_date_filterrI   !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dru   project_idsprojectsitogs_total_time_spentitogsnum	assistant
owners_idsis_ownerproject_tasksproject_recordsproject_lineproject_usersry   r   	user_lineuser_records
user_tasksr   task_records	hist_datecol_numr   
attachmenttemp_dir	file_pathfrowrv   rz   r|   r~   r   sI                                           `                           @@@@@r   r   zCmfTaskReport.export_time#   s
   KK+@@/##HT__$1,WZ&,[J4E 	$ 	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   	m m m%!m*.m/m4m949n5-7n$n nn$n,&n5n)'n<n)n59nnnn	n5n&"n))n2	.n55o	)NNNFNN)rT   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   