U
    TFdN$                     @   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_filter	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           3         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d	g}| dddddg | jj}| jj}| j}tj  dddd|gdd|gggf}t|jr|d d d d!|g d"t| jjj|g}tjj||d#}d"dd!|gdd|gdd|gd$d%d gg}t|jrH|d d!|g tjj|dd&d dd$gd#}| }| }|std' d S | j  d(| j! d)}t"j# d*}d+| }|j$%|s|&| | }|'d,(d-dd. )d|d/d0 (d-d1d2 )d1|d3d0 (d-d4d5 )d4|d6d0 (d-d7d8 )d7|d9d0 (d-d:d; )d:|d<d0 (d-d=d> )d=|d?d0 d@}||||dAD ]4}(d-||*dB )||d<d0 |d-7 }qt+dCdD |D }tj,jdEd!|gdFdGgd#}d}t- } d}!|D ]j.j/jgdHdD j0jD  }" j/j|"k}#t1fdIdJ|}$dKdD |$D |#rtt1fdLdJ|}%ntt1 fdMdJ|}%t|%dkrq|!}&(|&dj  (|&d:j! |!d-7 }!i }'|%D ]}(|(j2|'|(j2j/j< q|'D ]
})|!}*|'|) tt1fdNdJ|%}+dOdD |+D tt1fdPdJ|},(|*d1j  (|*dj  |!d-7 }!dQdR }-t3|,|-dSD ]~(|!d1j  (|!dj  j4jrj4jj5dTkr(|!d4j4j j j5dTkr (|!d4j j n(|!d7j  (|!d:j! tt1fdUdJ|+}.|.D ]}(|(j6j }/|/| j7dV }0fdWdX}1|1|!|0|(j8j |1|&|0|(j8j |1|*|0|(j8j |1|!d=|(j8j |1|&d=|(j8j |1|*d=|(j8j ||(j8jdY 7 }|/| krd| |/< | |/  |(j8jdY 7  < q:|!d-7 }!qqqdV}(|!d-dZ (|!d=| ||||dAD ]8})||d[d0 (|!|| 9|  |d-7 }qD| d\| }2|:|2 |S )]Nr   )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.nameresponsiblezresponsible.nameZepicz	epic.namelogic_prefixzparent_task.namezparent_task.logic_prefix
date_startdate_endzreport_filter.bqlZreport_typeft_responsibleZtimetracker_historyZEXISTS
start_datez>=z<=   
cmf_authorINZAND)r	   fields
time_spentz!=zparent.parentu)   Нет задач для экспорта-z.xlsxz
/files/tmpz/files/tmp/u   Задачи   u   Проект   )size   u   Пользователь(      u   Эпик      u   Задача2      u   Код      u   Часы работы      )ZdtstartZuntilz%Y-%m-%dc                 S   s   g | ]}|j jqS r   r   value.0taskr   r   r   
<listcomp>s   s     z-CmfTaskReport.export_time.<locals>.<listcomp>id	cmf_ownercmf_owner_assistantsc                 S   s   g | ]}|j jqS r   rK   rF   )rH   Z	assistantr   r   r   rJ   z   s     c                    s   | j j jjkS r   r   rF   rK   rI   )projectr   r   <lambda>}       z+CmfTaskReport.export_time.<locals>.<lambda>c                 S   s   g | ]}|j jqS r   rN   rG   r   r   r   rJ   ~   s     c                    s   | j j kS r   rE   record)project_tasks_idsr   r   rR      rS   c                    s   | j jko| jj jjkS r   )r   rF   Zcmf_author_idrK   rT   )current_personrV   r   r   rR      s    c                    s   | j jj jjkS r   )r2   rK   rF   rT   )userr   r   rR      rS   c                 S   s   g | ]}|j jqS r   rE   )rH   rU   r   r   r   rJ      s     c                    s   | j j kS r   rN   rP   )user_tasks_idsr   r   rR      rS   c                 S   s,   | j jr&| j jjdkr&| j jj| j S | jS )N	task.epic)parent_taskrF   r,   r)   rP   r   r   r   
tasks_sort   s    z-CmfTaskReport.export_time.<locals>.tasks_sort)keyrZ   c                    s   | j j jjkS r   rO   rT   rP   r   r   rR      rS   	   c                    s8     | |}|s|d }n||d 7 } | || d S )N<   )Zget_cell_valueset_cell_value)xyZ	new_valuerF   )wsr   r   update_cell   s
    
z.CmfTaskReport.export_time.<locals>.update_cellr_   u   Всего:
   /);Zpyexcelerater   r   r    r!   r"   r#   Zdatetimer$   r%   Zdateutil.rruler&   r'   osZload_fieldsr-   rF   r.   r/   ZmodelsZ	CmfPersonZget_current_userlenappendZjsonloadsr   bqlZCmfTasklistZCmfTimeTrackerHistoryZ	cmf_alertr)   r(   ZconfigZPROJECT_DIRpathexistsmkdirZ	new_sheetr`   Zset_col_stylestrftimesetZ
CmfProjectdictrL   rK   rM   r	   r2   sortedr[   r,   r0   Zdaysr5   r   Zsave)3r   rk   r4   Zformat_filer   r   r    r!   r"   r#   r$   r%   r&   r'   rg   r0   Zend_dater+   Zhistory_restrictZtasks_filterZtasksZrecords_filterZrecords	file_nameZpath_to_tmprm   wbcoldZproject_idsZprojectsZitogs_total_time_spentZitogsZnumZ
owners_idsZis_ownerZproject_tasksZproject_recordsZproject_lineZproject_usersrU   r]   Z	user_lineZuser_recordsZ
user_tasksr\   Ztask_recordsZ	hist_dateZcol_numrd   Zpath_to_filer   )rW   rQ   rV   rI   rX   rY   rc   r   export_time   s    








zCmfTaskReport.export_time)NNNFNN)r   )NNN)__name__
__module____qualname__classmethodboolrr   r   r   r   strrx   __classcell__r   r   r   r   r      s              
r   N)Zcmf.includeZcommon.fieldsr   r   r   r   r   r   <module>   s   