U
    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_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                    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 r| jD ]4}|j  | j kr^| j |_ |j|ddi| q^|S )NZ	cmf_ownerZcmf_owner_assistantsactivitylogic_prefixadd_object_typeZfieldsZ
productionT)codeZcache_inmemory1)ZRoadmapu   Дорожная картаzproject.baseu   Дорожная карта zRoadmap uL   Нельзя изменять memrers и tasks у корневого Roadmap)abort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kwargsresmemberr   r   r   r&      s>    




zCmfRoadmap.saveT<      )Z	only_onceZsoft_time_limitZ
system_jobpriorityc               	   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| |d dkrt  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-changes2   zRecalculate /z roadmaps caches)r    r   listlenr%   r/   gdebugidr&   r   Zcmf_emit_eventZ
cmf_commit)_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   