U
    $-dj                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_task_reportc                       sL   e Zd Zedeed fddZdd Zdd	d
Zde	dddZ
  ZS )CmfTaskReportNF)all_optionsmodels_filtersc           
         sN   |sg }|dkr2|o| dd }	|	r2|dd|	gg}t j|f|||d|S )Nreport_filterZ	parent_idz==)filtermodels_listobject_fields)getsuperfield_options_list)
clsZrelation_field_nameZ	object_idr
   r	   r   r   r   kwargsparent	__class__ "./common/models/cmf_task_report.pyr      s    z CmfTaskReport.field_options_listc                 C   s   |    d S N)Z_check_simple_perm)selfr   r   r   check_simple_perm   s    zCmfTaskReport.check_simple_perm   Уведомлениеc                 O   s   d S r   r   )r   textZnotify_nameargsr   r   r   r   all_place_notify   s    zCmfTaskReport.all_place_notify)returnc           (      C   s  ddl m}m}m}m}m}m}	 ddlm}
m	} ddl
m}m} dd l}ddddd	d
dddddddddd	g}| ddddg | jj}| jj}ddddd|ggdddd|ggg}dt| jjj|g}| }| }tjj||d}|r| j d| j d }tj d!}d"| }|j|s.|| | }| d#}|!d$d$d% |"d$|d&d' |!d$d(d) |"d(|d*d' |!d$d+d, |"d+|d-d' |!d$d.d/ |"d.|d0d' |!d$d1d2 |"d1|d3d' |!d$d4d5 |"d4|d-d' |!d$d6d7 |"d6|d8d' t# }d9}||||d:D ]4}|!d$||$d; |"||d3d' |d$7 }q6d}d$}|D ]}i }tj%jdd<|gdd|gdd|gd=d>d?ggd@dAddBgd} d}!| D ]}"|"j&j }#|#| j'd9 }$|"j(|kri ||"j(< |$||"j( krd||"j( |$< | j)dCkr||"j( |$  |"j*dD 7  < ||"j*dD 7 }|#|kr\d||#< ||#  |"j*dD 7  < qt+|dEdF dGD ]}%|d$7 }d}&|!|d$|j,j |!|d(|%j |j-r|!|d+|j-j |j.dHkr|!|d.|j n"|!|d.|j/j |!|d1|j |!|d4|j ||% D ],}$|!||$||% |$  |&||% |$ 7 }&q*|!|d6|& qqxd9}|d$7 }|!|d$dI |!|d6| ||||d:D ]8}|"||d3d' |!|||0|  |d$7 }q| dJ| }'|1|' nt2dK |S )LNr   )WorkbookColorStyleFontFillFormat)date	timedelta)rruleDAILYcodenameZcache_status_typepriorityZcmf_created_atZcmf_modified_atZ
alarm_dater   zparent.nameZresponsiblezresponsible.nameepicz	epic.namelogic_prefixzparent_task.name
date_startdate_endzreport_filter.bqlreport_typeZANDZtimetracker_historyZEXISTS
start_datez>=z<=)r   fields-z.xlsxz
/files/tmpz/files/tmp/u   Задачи   u   Проект   )size   u   Пользователь      u   Эпик      u   Задача2      u   Подзадача
      u   Код   u   Часы работы      )ZdtstartZuntilz%Y-%m-%d=r   z!=uR   Изменение фактических трудозатрат по задаче
time_spentZremaining_estimate
cmf_authorZanalysis_time_spent<   c                 S   s   | j jS r   )idvalue)pr   r   r   <lambda>       z+CmfTaskReport.export_time.<locals>.<lambda>)keyztask.subu   Всего:/u)   Нет задач для экспорта)3Zpyexcelerater   r   r   r    r!   r"   Zdatetimer#   r$   Zdateutil.rruler%   r&   osZload_fieldsr,   rF   r-   Zjsonloadsr   bqlZmodelsZCmfTasklistr(   r'   ZconfigZPROJECT_DIRpathexistsmkdirZ	new_sheetZset_cell_valueZset_col_styledictstrftimeZCmfTimeTrackerHistoryr/   ZdaysrC   r.   rB   sortedr   r*   r+   Zparent_taskr   ZsaveZ	cmf_alert)(r   rN   r0   Zformat_filer   r   r   r    r!   r"   r#   r$   r%   r&   rL   r/   Zend_dateZdate_restrictZfilter_vZtasks	file_nameZpath_to_tmprP   wbZwsZitogscoldZitogs_total_time_spentZnumZtaskZtask_tt_user_timesZtthist_listZtotal_time_spentZtthistZ	hist_dateZcol_numuserZtotal_by_lineZpath_to_filer   r   r   export_time   s     



"


zCmfTaskReport.export_time)NNNFNN)r   )NNN)__name__
__module____qualname__classmethodboolrS   r   r   r   strr[   __classcell__r   r   r   r   r      s              
r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   