U
    «"Šc!  ã                   @   s2   d dl T d dlT d dlmZ G dd„ dejƒZdS )é    )Ú*)Ú
cmf_notifyc                       s    e Zd ZdZdZdZi Ze e	j
 ejd¡e	j
 ejd¡g¡Zeed< ejf eŽZededœdd„ƒZ‡ fdd„Zeddd„ƒZedd„ ƒZedd„ ƒZ‡  ZS )Ú	CmfNotifyZNotifyZdeskZNTFzcommon/templateszcmf/templatesÚloaderN.r   F)Úis_notify_current_personc                 C   s¢  t jrt  d¡ dS |dk	s$tdƒ‚|dk	s4tdƒ‚|t jjkrH|
sHdS |	dkr^tjtj	d}	|sht j}d}d}|r | j
dd	|jgd
d	|gdd	dggddgd}|rª|j}|r²|}|s¼| ƒ }d|_| jd7  _||_||_||_||_|	|_|r|j|_|j|_|j|_|j|_|dk	r&||_n|r4|j|_|jsBg |_|jr~t|jjƒdkr~|jjdd… d d |kr~|S t|tƒr|j}|jj|jj|jj|jjdœtjtj	d  ¡ |dt!ƒ › ddœ}|j "|¡ | #¡  |r|j$|drt%d|jj||jjdœ|jjgd |jdkrH|j&sHt%d|j› |jgd t'j(j
|dddd d!d"gd#}|  )¡ }|rz| )¡ }|rž|  *||||¡ |  +|||¡ |S )$uw  
        obj: CmfEntity

        :param obj:
        :param msg_from:
        :param person_id: Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼Ñƒ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÐµÑ‚ÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ
        :param name: ÐÐ°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ
        :param text: Ð¢ÐµÐ¼Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ
        :param msg: Ð¢ÐµÐºÑÑ‚ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ
        :param priority:
        :param strikethrough:
        :param alarm_date: Ð‘ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹
        :param is_notify_current_person: ÐœÐ¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ ÑÐµÐ±Ðµ

        uB   Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ g.disable_notify = FalseN.u   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ msgu   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ person_id)Ztzu   Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸ÐµÚobj_idú==Ú	person_idÚstatusÚopenÚ
unread_cntÚcomments©ÚfilterÚfieldsé   r   éÿÿÿÿÚtext)ÚidÚnameÚcodeÚloginzCmfComment:)Z	cmf_ownerZcmf_created_atr   r   Z	log_level)r	   z	notify-os)r	   ÚcommentÚobj_href©Zevent_personsÚ2znotify-important-r   Únotify_emailÚemailÚ
notify_smsÚphoneÚphone_mobile)r   r   ),ÚgZdisable_notifyÚdebugÚAssertionErrorÚcurrent_personr   ZdatetimeZnowÚtimezoneZutcÚgetr   r
   r   r	   ÚstrikethroughÚpriorityÚ
alarm_dater   r   Zobj_codeÚui_nameZobj_ui_nameZhrefr   r   r   ÚlenÚvalueÚ
isinstanceZCmfTyper   Z	isoformatZuuid1ÚappendÚsaveZ	notify_osÚcmf_emit_eventZ	confirmedÚmodelsZ	CmfPersonZ+get_default_mail_notification_template_nameÚprocess_emailÚprocess_sms)ÚclsÚobjZmsg_fromr	   r   r   Úmsgr(   r'   r)   r   ÚnotifyÚnew_namer   ÚpersonÚmail_template© r;   ú./models/cmf_notify.pyÚplace_notify   s¬    

ýü
ÿþýü
õ
þý ÿzCmfNotify.place_notifyc                    s<   t ƒ j||Ž td| j ¡ › d| jji| j ¡ gd d S )Nznotify-person-Z	notify_idr   )ÚsuperÚemitr0   r	   Úloadr   r,   )ÚselfÚargsÚkwargs©Ú	__class__r;   r<   r?   –   s     ÿ
ýzCmfNotify.emitc                 C   sd   |st jjj}dd|gdddgg}|r8| dd|jg¡ | j|dgd}|D ]}d|_| ¡  qLd S )Nr	   r   r
   z!=Úclosedr   r   )r!   r$   r   r,   r.   Úlistr
   r/   )r4   r	   r5   Z_filterZnotifiesr7   r;   r;   r<   Úclose_open_notifiesž   s    
þzCmfNotify.close_open_notifiesc                 C   s†   |j s
d S dtj› }|› |j› }| j |¡}t|||d}|jf |Ž}	tj	 
¡ }
| ddg¡ |
j|jjpt|jj|	|jjd d S )Núhttps://)ÚmessageÚobj_linkr7   r   r   )Zsubject)r   ÚconfigÚAPP_FQDNr   Ú
_jinja_envZget_templateÚdictZrenderr1   ZCmfPluginMailBoxZget_local_mailboxZload_fieldsÚsend_messager   r,   r   r   )r4   r9   rJ   r7   r:   ÚurlrK   ÚtemplateÚcontextZmail_notificationZmail_boxr;   r;   r<   r2   °   s    
zCmfNotify.process_emailc                 C   s˜   |j s
d S dtj› }|jj}t|ƒdkr<|d d… › d}|› d|› d|› |j› }|jjpd|j	j}|s~t
d|› dƒ d S tj ¡ }| ||¡ d S )NrI   é   z...Ú
u4   SMS ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ u_    Ð½Ðµ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾, Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ‚ÐµÐ»ÐµÑ„Ð¾Ð½Ð°.)r   rL   rM   r   r,   r+   r   r    Znumberr   Z	cmf_alertr1   ZCmfPluginSMSGateZget_local_smsgaterP   )r4   r9   rJ   r7   rQ   Zsubjr   Zsms_gater;   r;   r<   r3   ¾   s    
zCmfNotify.process_sms)
NN.N..r   F.F)NN)Ú__name__Ú
__module__Ú__qualname__r*   Z	ui_moduleZcode_prefixZ_optionsZjinja2ZFileSystemLoaderÚosÚpathÚjoinrL   ZPROJECT_DIRZ_loaderZEnvironmentrN   ÚclassmethodÚboolr=   r?   rH   r2   r3   Ú__classcell__r;   r;   rD   r<   r      s>   ÿ          õõ 
r   N)Zcmf.includeZ
cmf.fieldsr   r   r;   r;   r;   r<   Ú<module>   s   