U
    Vc                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_roadmapc                       sX   e Z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
  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                    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                    s   | 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	 | _
t j||}| jjrttjj | j jr| j r| jD ]0}|j  | j kr| j |_ |j|d
di| q|S )NZ	cmf_ownerZcmf_owner_assistantactivityZfieldsZ
production)codeZRoadmapzRoadmap 1notifyF)parentr   Zload_fieldsr   r   r   modelsZCmfActivitygetZis_newnamer   
startswithr   savemembersZ
is_changedZcmf_deferred_taskr   recalculate_cache)r   argskwargsresmemberr   r   r   r      s,    



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    7   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   r2   N   s    
zCmfRoadmap.all_relation_persons)__name__
__module____qualname__r   r   r   staticmethodZ
celery_appZtaskr    r2   __classcell__r   r   r   r   r      s   !r   N)Zcmf.includeZmodules.project.fieldsr   r   r   r   r   r   <module>   s   