U
    j3f                      @   s6   d dl T d dlmZ d dlmZ G dd dejZdS )    )*)cmf_mail_handler)Pathc                       sN   e Zd Zed fdd	Z fddZ fddZdd	 Zed
d Z  Z	S )CmfMailHandlerNc                    st   |sg }|dkr4| dd  }r0|dd|gg}ng S |dkrZ|oJ| dd }|dd|gg}t j|f||d|S )Nmailbox_folders
mailbox_id	parent_id=obj_request_type)filterobject_fields)getsuperfield_options_list)clsZrelation_field_namer   r   kwargsr   r   	__class__ *./modules/mail2/models/cmf_mail_handler.pyr      s    z!CmfMailHandler.field_options_listc                    s   ddg}t   | S )Nmailboxzmailbox_folders.parent)r   save_preload_fields)selffieldsr   r   r   r      s    z"CmfMailHandler.save_preload_fieldsc                    sH   | j jr:| j D ]*}|j| jkrtd| d| j dd qt j||S )Nu   Папка u;    не принадлежит почтовому ящику Tabort)r   Z
is_changedparentr   	cmf_alertr   save)r   argsr   fr   r   r   r      s
    
zCmfMailHandler.savec              
   C   s  | j dkr|j| jjkrd S d }d }|ddg |jrL|jjrL|jj}n"|jrn|jD ]}|jrX|j} qnqX|stj	j
|jjdgd}|r|d }|rtd| d|  tj||jjd	d
d}|  nd|j d|j d|j d|jj d	}tj	| j|jp|jjd d pd||jj ||| j| jd}td| d|  |  ||_|jdd tjj|jd}|stjj|jd}|s| j}|s| jr|jj}tj|||ddddd}|  tjj| jjj|gd |stj }||_!||_"|jdd |r&||_!|jdd tj#j$|dddddd gd!D ]}	tj#j||	j%d"r^qB|	j%szt&d#|	 d$dd% t'|	j(}
|
) rBtj#||	j|	j%d&}t*|
d'}|+|,  W 5 Q R X |  |-|	| |jdd qBd S )(NZcreate_or_commentin_reply_to.handle_objreferences.handle_objz-cmf_created_at)Zorder_byr   u6   Создали комментарий в задачу u    из письма 
z<br>)r   textuE   <table class='mail-header'>
                    <tr><th>От</th><td>z (u9   )</td></tr>
                    <tr><th>Кому</th><td>u8   </td></tr>
                    <tr><th>Дата</th><td>z,</td></tr>
                    </table><br/>d   u   <Без темы>)r   namer$   
cmf_author	cmf_ownerZ
logic_typeZrequest_typeu   Создали задачу T)Z	only_data)emailF)Zloginr&   r)   Zservicedesk_allowZ
user_localZemail_if_authorZemail_if_self_changes)Z
project_idZemailsr&   full_path_fileext_idZurlZurl_previewZurl_preview_img)r   r   )r   r+   u   DEV: Fatal. Вложение u    не имеет ext_idr   )r   r&   r+   rb).handler_typeZ	mail_fromr   r)   Zload_fieldsZin_reply_to
handle_objZ
referencesmodelsZCmfTaskZfind_related_tasksr&   valuegdebugZ
CmfCommentr$   replacer   Zmail_from_nameZmail_toZcmf_created_atr   Z	text_htmlobj_logic_typer
   Z	CmfPersonr   
obj_authorcreate_userZregister_sdesk_clientidZcurrent_userr'   r(   ZCmfAttachmentlistr+   r   r   r*   existsopenZupload_filereadZ_replace_attachment)r   mailZcommentr.   rZtasksZtext_header_tabler'   r)   Z
attachmentZattach_pathZnew_attachmentZattachment_byter   r   r   handle_new_mail!   s    



	     

zCmfMailHandler.handle_new_mailc                 C   s   |j r
d S tjjdd|jgddd|jjggddd gggdddd	d
ddddg	d}|D ](}td| d|  |	|  q~qTd S )Nr   r	   ORr   INr   r-   r!   r"   r5   r4   r
   r6   zmailbox.email)r   r   u&   Обрабатываем письмо u    с помощью )
r.   r/   r   r8   r   Zmailbox_folderr7   r1   r2   r>   )r   r<   Zavailable_handlersZhandlerr   r   r   new_mail_handler_hook   s*    
    
z$CmfMailHandler.new_mail_handler_hook)NN)
__name__
__module____qualname__classmethodr   r   r   r>   rA   __classcell__r   r   r   r   r      s   rr   N)Zcmf.includeZmodules.mail2.fieldsr   pathlibr   r   r   r   r   r   <module>   s   