U
    <YhD	  ã                   @   s4   d dl T d dlZd dlZG dd„ dejjjjƒZdS )é    )Ú*Nc                   @   s&   e Zd Zedd„ ƒZeddd„ƒZdS )ÚCmfStatc                 C   s  |j  d¡s(|j  d¡s(|j  d¡s(d S |j  d¡r>|js>d S |j  d¡rf|j d¡sf|j d¡sfd S |j  d¡rxd}n|jr„d}nd}tjj }d }|j  d¡r¦|j}|j  d¡r¼|jj}n|j}|jsØt	 
|¡tjk	rît d|› d¡ d S |j ||t|jƒ||d	d
œ}tj |¡ d S )NzCmfDocument:zCmfTask:zCmfComment:ZcommentZcreateÚupdatezinvalid project_id "z+": it is not a CmfProject obj_id, skipping;F)Zobj_idÚ
project_idÚactionÚ	parent_idÚ	person_idÚ
history_idZ
aggregated)ÚidÚ
startswithZis_newr   ÚgZcurrent_userZcur_workflow_version_idÚparentZis_nullÚcmfutilZget_model_by_idÚmodelsZ
CmfProjectÚdebugÚstrÚdeferred_statsÚappend)ÚclsÚobjr   r   r	   r   Úoptions© r   ú&./modules/analytics/models/cmf_stat.pyÚdo_calc_statistics   sD    $
ÿ
ÿ
ù	zCmfStat.do_calc_statisticsFc              
   C   s´   t   ¡ }| rg t_d S tjs d S t dttjƒ› d¡ tjD ]B}t ¡ }| ¡ D ]\}}|||< qRt 	¡  | 
¡  W 5 Q R X q>g t_t   ¡ | dkr°t dt   ¡ | › ¡ d S )Nzapply_deferred_stats save z statsg{®Gáz„?zPROF apply_deferred_stats got )Útimer   r   r   Úlenr   r   Úitemsr   Zdisable_aclZsave)Z
only_cleanZprof_stZ	stat_dataÚstatÚkÚvr   r   r   Úapply_deferred_stats4   s     


zCmfStat.apply_deferred_statsN)F)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   Ústaticmethodr    r   r   r   r   r      s   
,r   )Zcmf.includer   Z!modules.analytics.fields.cmf_statÚmodulesZ	analyticsZfieldsZcmf_statr   r   r   r   r   Ú<module>   s   