B
    Ef2                 @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_roadmapc                   sT   e Zd Zdd Zdd Z fddZ fddZeed	d
d	d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_form)r   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_fields)r   )	__class__r
   r   r      s    zCmfRoadmap.save_preload_fieldsc                s  | j s|  | _ | j r.| j jdddddgd | jsP| jrP| jj rP| jj| _| jsr| j rr| j j rr| j j| _| jstjjddd	| _| j	r| j r| j j
s| jpd
 | _nL| jr| jjds| j r| j jdkrd| jpd
 | _nd| jpd
 | _| jr"| jjs| jjr"tddd t j||}| jjrFttjj | j jr| j rx>| jD ]4}|j  | j kr`| j |_ |j|ddi| q`W |S )NZ	cmf_ownerZcmf_owner_assistantsactivitylogic_prefixadd_object_type)fieldsZ
productionT)codeZcache_inmemory1)ZRoadmapu   Дорожная картаzproject.baseu   Дорожная карта zRoadmap uL   Нельзя изменять memrers и tasks у корневого Roadmap)abortZnotifyF)parentr   Zload_fieldsr   r   r   modelsZCmfActivitygetr   r   namer   
startswithr   systemmembersr   ZtasksZ	cmf_alertr   saveZschedule_deferred_jobr   recalculate_cache)r   argskwargsZresmember)r   r
   r   r"      s<    



zCmfRoadmap.saveT<      )Z	only_onceZsoft_time_limitZ
system_jobpriorityc           	   K   s   t j}d}d}x|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| |d dkr t  q W 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-changes2   zRecalculate /z roadmaps caches)r   r   listlenr!   r*   gdebugidr"   r   Zcmf_emit_eventZ
cmf_commit)Z_kwargsclsZtotal_countZ
calc_countr   Z
real_countZ
event_datar
   r
   r   r#   K   s$    

 

zCmfRoadmap.recalculate_cache)__name__
__module____qualname__r   r   r   r"   staticmethodZcmf_deferred_jobr#   __classcell__r
   r
   )r   r   r      s   .r   N)Zcmf.includeZmodules.project.fieldsr   r   r
   r
   r
   r   <module>   s   