U
    *d                      @   s>   d dl Z d dlT d dlmZ d dlmZ G dd dejZdS )    N)*)cmf_task)cmfutilc                   @   s   e Zd Zdd ZeddddZedddZd	d
 ZeddddddZedd Z	eddddZ
eddddZdS )CmfTaskc                 C   s   |  ddg | jjd| jdds&dS | jtjkr6dS tjjdgdd	dgd
dtjgggd}t	 }|D ]}|j
D ]}||j qpqf| jj|krdS dS )Nroot_parent	cmf_ownerzPPP-PR-BROWSEF)objZraise_errorT
persons.idservicedesk_allow=personsINfieldsfilter)Zload_fieldsr   check_project_role_accessr   gcurrent_usermodels
CmfCompanylistsetr   addid)selfcompany_personsall_memberscompanyperson r   (./modules/servicedesk/models/cmf_task.py_sdesk_check_access   s     

zCmfTask._sdesk_check_accessN)parentc                O   sl   t jj|d}t j|d|i|}|jd|d t|d t|jd |  |	 sft
ddd |jS )	Nr   r"   zPPP-TSK-CREATE)r   write   Нет доступа!Tabort)r   Z
CmfProjectgetr   r   r   acl_set_policyZsdesk_sla_cyclesZsaver!   	cmf_alertr   )clsr"   argskwargsZprojectresr   r   r    sdesk_create    s    zCmfTask.sdesk_createc                 O   st   |dkrP|o| dd }|rPtjj |d}|rP|jdrP| j|||d|S |drp| j|||d|S g S )Nstatusworkflow_idr#   ztask.sd_)relation_field_nameobject_fieldsZcf_)r(   r   ZCmfWorkflowcode
startswithZfield_options_list)r+   r2   r3   r,   r-   r1   Zworkflowr   r   r    sdesk_field_options_list,   s    
z CmfTask.sdesk_field_options_listc                 O   s    |   stddd | j||S )Nr%   Tr&   )r!   r*   update)r   r,   r-   r   r   r    sdesk_update@   s    zCmfTask.sdesk_update)reporterr   r   c                O   sf  |sg }dD ]}||kr| | q|s,g }| dddg |dkrtjjdgdddgd	d
tjgggd}t }|D ]}	|	jD ]}
||
j	j
 q~qt|r| dd
|g |dkr| ddtjg n,|r|dkr| ddtjg ntddd tjj||dd}|s|S tdd |}g }t|D ]8}t|d t|jd t|jd | | q(|S )N)r"   r0   Zparent_logic_prefixr   zproject.servicedesk)allrelater	   r
   Tr   r   r   r   r;   z!=ZmyzUnknown reporter optionr&   F)r   r   Zinclude_deletedc                 S   s   |   S )N)r!   )tr   r   r    <lambda>w       z$CmfTask.sdesk_list.<locals>.<lambda>read)appendr   r   r   r   r   r   r   r   r   valuer*   r   builtinsr   r   r)   r"   r0   )r+   r9   r   r   r,   r-   Zfieldr   r   r   r   r.   Zres_filteredZtaskstaskr   r   r    
sdesk_listE   sL    

zCmfTask.sdesk_listc                 O   s,   | j ||}|r| sd S t|d |S )Nr?   )r(   r!   r   r)   )r+   r,   r-   r.   r   r   r    	sdesk_get   s
    zCmfTask.sdesk_get)r   c                O   s$   dg}t jj|d|i|}t|S )Nr   r   )r   r   rD   len)r+   r   r,   r-   Z	task_listr   r   r    sdesk_count   s    zCmfTask.sdesk_countc                O   s   | j }d}|dd}|rb| j|dgd}| s6dS |jrb|jjrb|jj}|rb|j j}|j}t	|pjg }	|r|dg }
|
D ]}|	
|dg  q| |	}| j||dd	|}|r||_||_|S )
ux   
        fields - список мета-правил для указания какие поля грузить
        defaultr   Nzrequest_type.ui_form_view)r   r   Zui_group_fieldsr   Zsimple)full_fields_loadZmapper)ui_formr(   r!   Zrequest_typeZui_form_viewui_form_jsonloadrA   namer   r7   Z_build_load_planZ_getui_form_name)r+   r   r,   r-   rK   rN   r   rC   rJ   Z
fields_setgroupsZ
group_datarI   retr   r   r    sdesk_ui_get   s.    	
zCmfTask.sdesk_ui_get)N)__name__
__module____qualname__r!   classmethodr/   r6   r8   rD   rE   rG   rQ   r   r   r   r    r      s    =
r   )rB   Zcmf.includeZmodules.task.modelsr   Zcmf.utilr   r   r   r   r   r    <module>   s   