U
    Įwh                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_attachmentc                   @   sx   e Zd Zejjdddg Zedd Zedddd	Zeddd
dZ	dd Z
dd ZdddZdd Zdd ZdS )CmfAttachment	sdesk_get
sdesk_listsdesk_createc                O   sf   t j|ddgd}tj|d|i|}|j s<tddd |jjd|d t 	|d	 |
  |jS )
Nparentprojectidfieldsu   Нет доступа!T)abortzPPP-ATT-CREATE)objwrite)cmfutilget_obj_by_idmodelsr   r   _sdesk_check_accessZ	cmf_alertr	   Zcheck_project_role_accessacl_set_policysaver   )clsr   argskwargsr   res r   ../modules/servicedesk/models/cmf_attachment.pyr      s    
zCmfAttachment.sdesk_createN)r   c                O   sH   |sg }d|kr| d | j|d|i|}|r@tdd |}t|S )Nr   r   c                 S   s
   | j  S )N)r   r   )cr   r   r   <lambda>!       z*CmfAttachment.sdesk_list.<locals>.<lambda>)appendlistfilter)r   r   r   r   r   r   r   r   r      s    
zCmfAttachment.sdesk_listc                O   sd   |sg }d|kr| d | j|d|i|}|r`tj|jddgd}|j sTd S t|d |S )Nr   r   r	   r
   read)r   getr   r   	parent_idr   r   r   )r   r   r   r   r   r   r   r   r   r   &   s    

zCmfAttachment.sdesk_getc                 C   s<   |  dddg tjjs$| jjdkr(dS | jj r8dS d S )Nr   parent.parentzproject.logic_prefixzproject.servicedeskFT)load_fieldsgcurrent_person
user_localr	   Zlogic_prefixr   r   selfr   r   r   sdesk_check_write5   s
    zCmfAttachment.sdesk_check_writec                 C   s.   |  ddg tjjrdS | jj r*dS d S )Nr   r%   FT)r&   r'   r(   r)   r   _pub_check_writer*   r   r   r   pub_check_write<   s
    zCmfAttachment.pub_check_writeFc                 K   sp   dd l }tjj| j|d}|sl|rltj| jdd}| j|_tjj|j|jj	dd|_
t|d |  |S )Nr   r
   F)nameis_dirT)r   mkdirr   )osr   ZCmfRFiler#   Z
_file_namer/   r   pathdirnamevaluer   r   r   r   )r+   r   create_kwargsr2   r   r   r   r   
_get_rfileC   s    zCmfAttachment._get_rfilec                 O   s<   t j| jdgd}|j s d S | jdd}|j|| d S Nr   r
   T)r6   )r   r   r$   r   r   r8   stream_writer+   r   r   r   Zrfiler   r   r   sdesk_upload_stream_fileN   s
    
z&CmfAttachment.sdesk_upload_stream_filec                 O   s<   t j| jdgd}|j s d S | jdd}|j|| d S r9   )r   r   r$   r   r-   r8   r:   r;   r   r   r   pub_upload_stream_fileV   s
    
z$CmfAttachment.pub_upload_stream_file)NF)__name__
__module____qualname__r   r   Zapi_methodsclassmethodr   r   r   r,   r.   r8   r<   r=   r   r   r   r   r      s    


r   N)Zcmf.includeZmodules.files.modelsr   r   r   r   r   r   <module>   s   