B
    eb                 @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ dZdZd	Zd	Zd
ej Zdedfd edffZdedfd edffZd	edfdedffZG dd dejZdd ZdS )    )settings)models)gettext_lazy)cache)DepartmentForeignKey)
Departmentget_all_childrens_by_deptid)db_const   d   z%s_line_notify_send   ZenableStatus_option_enableZenableStatus_option_disableZboolean_option_yesZboolean_option_noZ&lineNotifySetting_messageType_realTimeZ7lineNotifySetting_messageType_intradayAttendanceSummaryc                   s  e Zd ZeeedddejdZej	eddde
dZejededdedd	Zej	ed
dddedZejedddedZejedddedZejeddddZej	edddedZejedddedZG dd dZd fdd	Zd  fdd	Zedd Zdd Z   Z!S )!LineNotifySettingZlineNotify_field_departmentFT)verbose_nameblanknullZ	on_deleteZ%lineNotify_field_includeSubDepartment)r   r   choicesZ lineNotify_field_lineNotifyTokenZ'lineNotify_field_lineNotifyTokenHelpTxt)
max_lengthr   r   Z	help_textZlineNotify_field_messageTyper   )defaultr   r   r   ZlineNotify_field_messageHead)r   r   r   ZlineNotify_field_messageTailZlineNotify_field_pushTime)r   r   ZlineNotify_field_isValidZlineNotify_field_remarkc               @   s   e Zd ZejZedZdZdS )zLineNotifySetting.MetaZbase_model_lineNotifySetting))line_notify_deptline_notify_tokenmessage_typeN)	__name__
__module____qualname__r	   Z	APP_LABELZ	app_label_r   Zunique_together r   r   ?G:\easytimepro\master/mysite/base\models\line_notify_setting.pyMeta9   s   r   Nc                sD   |    | jd kr| jr*ttjd d tt| 	|||| d S )N_jobr   )
delete_cachepk	push_timer   setr   UNITsuperr   save)selfZforce_insertZforce_updateusingZupdate_fields)	__class__r   r   r%   >   s    zLineNotifySetting.savec                sH   |    | jr0| jdkr0| jr0ttjd d tt	| j
d dd d S )Nr
   r   r   F)r'   keep_parents)r   is_validr   r!   r   r"   r   r#   r$   r   delete)r&   r'   r)   )r(   r   r   r+   D   s    zLineNotifySetting.deletec             C   s   g }t dtj| f }|r*|| |S tjjdddj| d}x2|D ]*}t	|j
jddd}| |krH|| qHW |ttjj| dd t dtj| f | |S )	Nz%s_enable_line_notify_%sr   )include_sub_departmentr*   )line_notify_dept_ididT)flat)r-   r*   )r   getr   r#   extendr   objectsfilterZexcluder   r-   values_listappendlistr"   )deptidZobj_list
cached_objZinclude_sub_dept_qsZqsZ	dept_listr   r   r   obj_list_by_deptidJ   s    

z$LineNotifySetting.obj_list_by_deptidc             C   s   | j g}| jd krB| jdkr\| jdkr\|t| j jddd n|t| j jddd x |D ]}tdt	j
|f  qbW tt d S )Nr   r.   T)r/   z%s_enable_line_notify_%s)r-   r    r,   r*   r1   r   r4   r   r+   r   r#   CACHE_KEY_SEND)r&   Zrelate_deptidsr7   r   r   r   r   ]   s    

zLineNotifySetting.delete_cache)FFNN)NF)"r   r   r   r   r   r   r   ZCASCADEr   ZIntegerFieldBOOLEAN_CHOICEr,   Z	CharFieldMAX_NVARCHAR_TOKENr   MESSAGE_TYPEr   MAX_NVARCHAR_HEADZmessage_headMAX_NVARCHAR_TAILZmessage_tailZ	TimeFieldr!   AVAILABLE_CHOICEr*   MAX_NVARCHAR_REMARKZremarkr   r%   r+   staticmethodr9   r   __classcell__r   r   )r(   r   r   (   s(   r   c              C   s8   t t} | d k	r| S tjjdd } t t|  | S )Nr   )r*   )r   r0   r:   r   r2   r3   countr"   )r8   r   r   r   get_line_notify_send_flagj   s    
rE   N)Zdjango.confr   Z	django.dbr   Zdjango.utils.translationr   r   Zdjango.core.cacher   Zmysite.personnel.fieldsr   Z(mysite.personnel.models.model_departmentr   r   Zmysite.baser	   r<   rA   r>   r?   r#   r:   r@   r;   r=   ZModelr   rE   r   r   r   r   <module>   s&   



B