B
    ۮf                 @   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fields)r   r   r   r      s    z"CmfMailHandler.save_preload_fieldsc                sL   | j jr>x4| j D ]*}|j| jkrtd| d| j dd qW t j||S )Nu   Папка u;    не принадлежит почтовому ящику T)abort)r   Z
is_changedparentr   	cmf_alertr   save)r   argsr   f)r   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rpx|jD ]}|jrZ|j}P qZW tj	j
|jd}|s| j}|s| jr|jj}tj	|||ddddd}|  ttj	j| jjj|ggd |stj}|stjj|jjd	gd
}|r|d }|rDtd| d|  tj|||jd}|  nd|j d|j d|j d|jj d	}tj| j|jp|jjd d pd||jj ||| j| j d}td| d|  |  ||_|jdd xtj!j"|ddddddgdD ]}	tj!j
||	j#d rq|	j#s2t$d!|	 d"dd# t%|	j&}
|
' rtj!||	j|	j#d$}t(|
d%}|)| W d Q R X |  |*|	| |jdd qW d S )&NZcreate_or_commentzin_reply_to.handle_objzreferences.handle_obj)emailTF)Zloginnamer   Zservicedesk_allowZ
user_localZemail_if_authorZemail_if_self_changes)r   z-cmf_created_at)Zorder_byr   u6   Создали комментарий в задачу u    из письма )
cmf_authorr   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   r    r"   r!   Z	cmf_ownerZ
logic_typeZrequest_typeu   Создали задачу )Z	only_datar    full_path_fileext_idZurlZurl_previewZurl_preview_img)r   r   )r   r%   u   DEV: Fatal. Вложение u    не имеет ext_id)r   )r   r    r%   rb)+handler_typeZ	mail_fromr   r   Zload_fieldsZin_reply_to
handle_objZ
referencesmodelsZ	CmfPersonr   
obj_authorcreate_uservaluer   Zschedule_deferred_jobZregister_sdesk_clientr   idgZcurrent_userZCmfTaskZfind_related_tasksr    debugZ
CmfCommentZ	text_htmlZmail_from_nameZmail_toZcmf_created_atr"   obj_logic_typer
   ZCmfAttachmentlistr%   r   r   r$   existsopenZupload_stream_fileZ_replace_attachment)r   mailcommentr(   rr!   r   ZtasksZtext_header_tableZ
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}x.|D ]&}td| d|  |	| P qVW d S )Nr   r	   ORr   INr   r'   zin_reply_to.handle_objzreferences.handle_objr*   r0   r
   r+   zmailbox.email)r   r   u&   Обрабатываем письмо u    с помощью )
r(   r)   r   r1   r   Zmailbox_folderr-   r.   r/   r7   )r   r4   Zavailable_handlersZhandlerr   r   r   new_mail_handler_hook   s    


z$CmfMailHandler.new_mail_handler_hook)NN)
__name__
__module____qualname__classmethodr   r   r   r7   r:   __classcell__r   r   )r   r   r      s   kr   N)Zcmf.includeZmodules.mail2.fieldsr   Zpathlibr   r   r   r   r   r   <module>   s   