U
    $-dP                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_roadmapc                       sj   e Zd Zdd Zdd Z fddZ fddZeej	d	d
d	ddd Z
 fddZdddZ  ZS )
CmfRoadmapc                    s    fdd  | j jS )Nc                    s0   | sd S | j dkr| S | j   | jjS d S )NZ
CmfProject)
class_nametree_parentloadvalue)Zchildroot_parent './modules/project/models/cmf_roadmap.pyr
   	   s    

z,CmfRoadmap._calc_parent.<locals>.root_parent)r   r   selfr   r	   r   _calc_parent   s    zCmfRoadmap._calc_parentc                 C   s   | j js| jsd S d| _d S )NZgantt)Z
logic_type
is_changedis_newZui_view_formr   r   r   r   _calc_ui_view_form   s
    zCmfRoadmap._calc_ui_view_formc                    s   t   ddg S )Nzmembers.responsibleztree_parent.activity)supersave_preload_fieldsr   	__class__r   r   r      s    zCmfRoadmap.save_preload_fieldsc                    sF  | j s*|  | _ | j r*| j jdddgd | jsL| jrL| jj rL| jj| _| jsn| j rn| j j rn| j j| _| jstjjdd| _| j	r| j
r| j
jdsd| j
pd	 | _
| jr| jjs| jjrtd
dd t j||}| jjrttjj | j jrB| j rB| jD ]4}|j  | j kr| j |_ |j|ddi| q|S )NZ	cmf_ownerZcmf_owner_assistantsactivityZfieldsZ
production)codeZRoadmapzRoadmap 1uL   Нельзя изменять memrers и tasks у корневого RoadmapT)abortnotifyF)parentr   Zload_fieldsr   r   r   modelsZCmfActivitygetr   namer   
startswithsystemmembersr   ZtasksZ	cmf_alertr   saveZcmf_deferred_taskr   recalculate_cache)r   argskwargsresmemberr   r   r   r$      s2    



zCmfRoadmap.saveT<   )Z	only_onceZsoft_time_limitZsystem_taskc               	   K   s   t j}d}d}|jddgdD ]}|d7 }t|j}|j|kr|d7 }td|j d| d|j  ||_|j	d	d
 |jj
|jj
d}td|j | td| qtd| d| d |S )u;   Актуализация кеша кол-ва членов.r   cache_members_countr#   r      zUpdate cache_members_count z ->  T)Z	only_data)Znode_idZelements_countztree-node-count-changes-ztree-node-count-changeszRecalculate /z roadmaps caches)r   r   listlenr#   r+   gdebugidr$   r   Zcmf_emit_event)_kwargsclsZtotal_countZ
calc_countr   Z
real_countZ
event_datar   r   r   r%   D   s     

 zCmfRoadmap.recalculate_cachec                    s8   t t jf |}| j r0|| jjf | t|S N)setr   all_relation_personsr   r   updater/   )r   r'   Zpersonsr   r   r   r8   [   s    
zCmfRoadmap.all_relation_persons   Уведомлениеc                 O   s   d S r6   r   )r   textZnotify_namer&   r'   r   r   r   all_place_notifya   s    zCmfRoadmap.all_place_notify)r:   )__name__
__module____qualname__r   r   r   r$   staticmethodZ
celery_appZtaskr%   r8   r<   __classcell__r   r   r   r   r      s   'r   N)Zcmf.includeZmodules.project.fieldsr   r   r   r   r   r   <module>   s   