U
    Q'df                     @   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g}| ddddg | jj|dd  }| jj|dd  }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(|d*d! |!dd+d, |"d+|d-d! |!dd.d/ |"d.|d'd! |!dd0d1 |"d0|d2d! t# }d3}||||d4D ]4}|!d||$d5 |"||d-d! |d7 }q2d}d}|D ]}|d6d7d8dd9d:dd;d<d=d
g tj%jd6d>|gdd|gd?d|ggd@d=ddAgdd
gdB}d} |D ]:}!|d7 }|!j&j }"|"| j'd3 }#| j(dCkr|!|d|j)j |j*r8|!|d%|j*j |j+dDkrV|!|d(|j n"|!|d(|j,j |!|d+|j |!|d.|j |!||#|!j-dE  ||!j-dE 7 }|!|d0|!j-dE  |!|d"|!j.j |"|krd||"< ||"  |!j-dE 7  < q| j(dFkr|!j/r|!j/dE }$nd}$|| |# jrB| || |# j8 } |!||#|$ | |$7 } |"|krjd||"< |$||"< |!|d|j)j |!|d"|!j.j |j*r|!|d%|j*j |j+dDkr|!|d(|j n"|!|d(|j,j |!|d+|j |!|d.|j |!|d0|$dE  qؐqtd3}|d7 }|!|ddG |!|d0| ||||d4D ]8}|"||d-d! |!|||0|  |d7 }qP| dH| }%|1|% nt2dI |S )JNr   )WorkbookColorStyleFontFillFormat)date	timedelta)rruleDAILYcodenamezresponsible.nameZcache_status_typepriorityZcmf_created_atZcmf_modified_atZ
alarm_date
date_startdate_endzreport_filter.bqlreport_type   )daysZ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-%dr   zparent.nameZresponsibleepicz	epic.namelogic_prefixzparent_task.nameremaining_estimate=end_date
time_spent	cmf_owner)r   r0   Zorder_byZanalysis_time_spentztask.sub<   Zanalysis_time_plannedu   Всего:/u)   Нет задач для экспорта)3Zpyexcelerater   r   r   r    r!   r"   Zdatetimer#   r$   Zdateutil.rruler%   r&   osZload_fieldsr*   valuer+   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/   r.   r,   r   r@   rA   Zparent_taskrE   rF   rB   r   ZsaveZ	cmf_alert)&r   rL   r0   Zformat_filer   r   r   r    r!   r"   r#   r$   r%   r&   rI   r/   rD   Zdate_restrictZfilter_vZtasks	file_nameZpath_to_tmprN   wbZwsZitogscoldZitogs_total_time_spentZnumZtaskZtthist_listZtotal_time_spentZtthistZ	hist_dateZcol_numZrem_estZpath_to_filer   r   r   export_time   s     




  



zCmfTaskReport.export_time)NNNFNN)r   )NNN)__name__
__module____qualname__classmethodboolrQ   r   r   r   strrW   __classcell__r   r   r   r   r      s              
r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   