U
    j*g!                     @   s2   d dl T d dlZd dlmZ G dd dejZdS )    )*N)cmf_kanban_boardc                       sf   e Zd Zejjddg Zedd ZdddZe	d	d	d
ddZ
 fddZdd fdd
Z  ZS )CmfKanbanBoardget_countersclose_simple_board_periodc                 C   s   | j  d| j d| j S )N/)Z	ui_moduleZui_namecode)self r
   ,./modules/project/models/cmf_kanban_board.pyhref   s    zCmfKanbanBoard.hrefNFc                 C   sn  di i}|rd g d|d< i }|  dddg | jD ]2}|jD ]}|jj||jj< q>ddi|d |j< q4t| jj	j}|r|t|g}|r| jj	j|g|d d	< d
}t
jst
jrd}tjjddg|dD ]}	|	jr|	jjsq|	jjj|krq|sFtjjd|	jdd|	j|	jd
|	jd
d	}
|
sF|r|d d |	j|	jjjg q|d ||	jjj  d  d7  < q|S )Ncolumns)filterdenieddebugz-kanban_board_columns.mapped_status_codes.codezkanban_filter.bqlZ
limit_daystotalr   r   FTz	status.--zstatus.status_code.code)fieldsr   readCmfTaskname)	Zaccess_levelZinitial_acl_keyZobject_modelZobject_fieldZ	object_idZobject_parent_idis_newZperm_security_level_allowed_idsZraise_errorr      )Zload_fieldsZkanban_board_columnsmapped_status_codesidvaluer   Zjsonloadskanban_filterZbqlgZdisable_permissionsZacl_admin_modemodelsr   Zsliststatusstatus_codeZCmfAccessListZcheck_accessZperm_effective_acl_idZ	parent_idZ%perm_security_level_allowed_ids_cacheappend)r	   r   ZdbgresZstatus_code_to_columncolZst_codeZlist_filterZskip_perm_checktaccessr
   r
   r   r      sX     


   $zCmfKanbanBoard.get_counterszdatetime.datetime)r   period_start
period_endc           	      O   s   | j  dkrtddd tj|| d}|jdd tjjdd	| ggd
ddgdd|gdd|ggd}|D ](}|j	|  |j
| |jdd qh|S )N)z	list.basez
list.boarduV   Периоды можно закрывать только у Простой доскиT)abort)r   Ztree_parentFnotifylistsINzstatus.code=closedZstatus_closed_atz>=z<=)r   )Zlogic_prefixloadZ	cmf_alertr   ZCmfListsaver   listr+   remover!   )	r	   r   r&   r'   argskwargsZclosed_period_tasksZclosed_tasksZtaskr
   r
   r   r   U   s    
z(CmfKanbanBoard.close_simple_board_periodc                    s   | j rt j|| | jrD| jsDt }|j| j |  || _d| _	ddddd}ddd	d
d}tj
jddddddggddgdD ]F}t }| |_||j |_|j|_|g|_||j |_|j|| qt j||S )Nz6 nonez#60b1bbz#3f82d8z#e36b51z#23a055)openin_progress	in_reviewr.   i  i  i  i  r   r,   r5   r6   r7   r.   r   )r   r   )r   superr0   parentr   r   ZCmfTaskFilterZft_projectsr!   Zswimlane_typeZCmfStatusCoder1   ZCmfKanbanBoardColumnr   Zordernor   r   Zcolor)r	   r3   r4   r   ZcolorsZorderno_dictr    column	__class__r
   r   r0   q   s>    


zCmfKanbanBoard.saver)   c                   s   t  j|ddi|S )Nr*   F)r8   delete)r	   r*   r3   r4   r;   r
   r   r=      s    zCmfKanbanBoard.delete)NF)__name__
__module____qualname__r   r   Zapi_methodspropertyr   r   strr   r0   r=   __classcell__r
   r
   r;   r   r      s   

E&r   )Zcmf.includeZdatetimeZmodules.project.fieldsr   r   r
   r
   r
   r   <module>   s   