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   