
     h                     L    d dl  d dlmZ d dlZ G d dej
                        Zy)    )*)cmf_task_resource_assignmentNc                   v     e Zd Zed        Ze eddddgd      dd              Z fd	Z fd
Z fdZ	 xZ
S )CmfTaskResAssignc                     t         j                  j                  dd| gdd|gg      }|D ]  }|j                           y )Nparent==personIN)filter)modelsr   listdelete)taskpersonsassignments
assignments       6./modules/gantt/models/cmf_task_resource_assignment.pyremove_task_resourcesz&CmfTaskResAssign.remove_task_resources	   sP    --22HdD;Q<DdG;T;V2 W% 	 J	     u   Расчет CmfTaskResAssignFTtask_id   )descriptionshow_bg_progressbar	only_onceonly_once_argspriorityc           	      "   t         j                  j                  | g dd      }t               }|j                  rit        |j                  j                  t         j                        r;|j                  j                  s%|j                  |j                  j                         |j                  rQ|j                  |j                  D ch c],  }t        |t         j                        s|j                  r+|. c}       t         j                  j                  dd|gg d      }|D ch c]  }|j                   }}||z
  }||z
  }|rFt        j!                         5  t         j                  j#                  |t        |             d d d        |D cg c]  }|j                  |vs| }	}|D ]  }
t        |
t         j                        s|
j$                  xs  t         j&                  j                  d      }t         j                  ||
d	|j(                  j*                  xs t,        j.                  j1                         |j(                  j*                  xs t,        j.                  j1                         |
      }t        j!                         5  |j3                          d d d        |	j5                  |        |s|r!|j(                  j7                  |	xs d        y y c c}w c c}w # 1 sw Y   kxY wc c}w # 1 sw Y   _xY w)N)zexecutors.cmf_deletedzresponsible.cmf_deletedzexecutors.calendarzresponsible.calendarop_gantt_taskzop_gantt_task.sched_start_dateT)idfieldsinclude_deletedr   r	   )r
   r   calendar)r   r!   )
is_defaultd   )r   r
   units
date_startdate_endr#   )r   )r   CmfTaskgetsetresponsible
isinstancevalue	CmfPersoncmf_deletedadd	executorsupdater   r   r
   cmfutildisable_aclr   r#   CmfCalendarr   sched_start_datedtdatetodaysaveappendtask_resources_changed_hook)r   r   r   executorcur_assignmentsr   cur_personsto_be_assigned_personsto_be_removed_personsr   pr#   s               r   sync_task_resourcesz$CmfTaskResAssign.sync_task_resources   s    ~~!!W 6M^b " d %
4+;+;+A+A6CSCS T]a]m]m]y]yKK((../>>NNT^^  LzRZ\b\l\lGmv~  wK  wKH  L  M 1166xt>T>^ 7 `;JKZz((KK!(;!6 +g 5 $$& a''==dDI^D_`a 5DvjzGXGX`uGuzvv' 	+Aa!1!12zzLV%7%7%;%;t%;%LH00-->>Q"''--/++<<O! 1 J $$& "!"z*	+  !$:::{GZVZ:[ %;; L L
a a w" "s<   	K))K)6K)+K. *K3L *L L3K=L	c                     t        t        | 	               }| j                  dg       | j                  r0| j                  j                         D ]  }|j                  |        t        |      S )Nr   )r+   super
get_ownersload_fieldsr   r1   r   )selfargskwargsownersparent_owner	__class__s        r   rG   zCmfTaskResAssign.get_ownersB   s`     UW')*($;; $ 6 6 8 )

<()F|r   c                    | j                  ddg       t        j                  | j                        }|r=|j	                  d| j
                  d      s|j	                  d| j
                         y y t        |           y Nr   
project_idzPPP-TSK-ASSIGNF)objraise_errorzPPP-TSK-ASSIGN-EXECUTORS)rR   )rH   APPget_cache_projectrQ   check_project_role_accessr   rF   check_edit_permrI   projectrN   s     r   rW   z CmfTaskResAssign.check_edit_permL   sz     	(L12''8 445E4;;di4j112LRVR]R]1^ k G#%r   c                    | j                  ddg       t        j                  | j                        }|r=|j	                  d| j
                  d      s|j	                  d| j
                         y y t        |           y rP   )rH   rT   rU   rQ   rV   r   rF   check_delete_permrX   s     r   r[   z"CmfTaskResAssign.check_delete_perm[   sx    (L12''8 445E4;;di4j112LRVR]R]1^ k G%'r   )N)__name__
__module____qualname__staticmethodr   cmf_deferred_jobrD   rG   rW   r[   __classcell__)rN   s   @r   r   r      sg        "AW\hl  H  ~I "-\" -\^&	( 	(r   r   )cmf.includemodules.gantt.fieldsr   datetimer8   r    r   r   <module>rf      s#     = ](3DD ](r   