U
    5vet                     @   s2   d dl T d dlmZ d dlZG dd dejZdS )    )*)cmf_task_resource_assignmentNc                       s@   e Zd Zedd Zedd Z fddZ fddZ  ZS )	CmfTaskResAssignc                 C   s4   t jjdd| gdd|ggd}|D ]}|  q"d S )Nparent==personINfilter)modelsr   listdelete)taskpersonsassignments
assignment r   6./modules/gantt/models/cmf_task_resource_assignment.pydel_task_resources	   s
    z#CmfTaskResAssign.del_task_resourcesc           	   	   C   sj  |  ddddddg g }| jjr8| jjr8|| jj | jjrdt| jjt| jj }|t|7 }|rvt	j
| | g }| jr|| jj | jr|| jj7 }|rft	j
jdd| gd	d
|ggd	ddgd}t|dd |D  }|D ]p}t|t	jsq|jpt	jjdd}t	j
| |d| jjp*tj | jjp<tj |d}|  || q| jj|d d S )N	executorsresponsiblezexecutors.calendarzresponsible.calendarop_gantt_taskzop_gantt_task.sched_start_dater   r   r   r   calendar)r
   Zfieldsc                 S   s   h | ]
}|j qS r   )r   ).0r   r   r   r   	<setcomp>(   s     z7CmfTaskResAssign.sync_task_resources.<locals>.<setcomp>T)Z
is_defaultd   )r   r   ZunitsZ
date_startZdate_endr   )r   )load_fieldsr   Z
is_changedoldappendr   setnewr   r   r   r   value
isinstanceZ	CmfPersonr   ZCmfCalendargetr   Zsched_start_datedtdateZtodayZsaveZtask_resources_changed_hook)	r   Zremoved_resourcesZremoved_executorsr   r   Zno_assign_personspr   r   r   r   r   sync_task_resources   sN     z$CmfTaskResAssign.sync_task_resourcesc                    sX   |  ddg dd| jgdd| jgdddgg}tjj|dD ]}|  q<t j||S )Nr   r   Z	cmf_ownerr   Zhistory_typeZplanr	   )r   r   r   r   ZCmfTimeTrackerHistoryr   r   super)selfargskwargsZ_filterZtth	__class__r   r   r   9   s    


zCmfTaskResAssign.deletec                    sB   t t  }| dg | jr:| j D ]}|| q*t|S )Nr   )r   r(   
get_ownersr   r   addr   )r)   r*   r+   ZownersZparent_ownerr,   r   r   r.   C   s    zCmfTaskResAssign.get_owners)	__name__
__module____qualname__staticmethodr   r'   r   r.   __classcell__r   r   r,   r   r      s   

(
r   )Zcmf.includeZmodules.gantt.fieldsr   Zdatetimer$   r   r   r   r   r   <module>   s   