U
     e
                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_task_resource_assignmentc                       s4   e Zd Zedd Ze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   sR  |  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 }|rNt	j
jdd| gd	d
|ggd	ddgd}t|dd |D  }|D ]X}t|t	jsq|jpt	jjdd}t	j
| |d| jj| j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_dateZ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   6   s    


zCmfTaskResAssign.delete)__name__
__module____qualname__staticmethodr   r%   r   __classcell__r   r   r*   r   r      s
   

'r   N)Zcmf.includeZmodules.gantt.fieldsr   r   r   r   r   r   <module>   s   