B
    eb                 @   s   d dl Z d dlmZ d dlmZmZ d dlmZ d dl	m
Z d dlmZ d dlmZ G dd	 d	eZd
d Zdd Zejeed ejeed dS )    N)models)	post_savepost_delete)gettext_lazy)choices)Employee)AbstractCloudc                   s   e Zd ZejeeddddejdZej	edddZ
ejeddZejed	ejd
Zej	edddddZej	edddddZejedddddZ fddZG dd dZ  ZS )AnnouncementZannouncement_filed_empT)verbose_namenullblankeditableZ	on_deleteZannouncement_filed_subjectd   )r
   
max_lengthZannouncement_filed_content)r
   Zannouncement_field_category)r
   r   Zannouncement_field_sender2   )r
   r   r   r   Zannouncement_field_systemSenderZannouncement_field_noticeTimeF)r   r   r   c                sv   y|r|d j }t|| _W n$ tk
r@   dd l}|  Y nX tj }|| _|r`|	d t
t| j|| d S )NZrequestr   )userstrsystem_sender	Exception	traceback	print_excdatetimeZnowcreate_timepopsuperr	   save)selfargskwargsr   r   Z	send_time)	__class__ @G:\easytimepro\master/mysite/mobile\models\model_announcement.pyr      s    


zAnnouncement.savec               @   s    e Zd ZdZdZedZeZdS )zAnnouncement.Meta)deletemobileZapp_model_announcementN)__name__
__module____qualname__Zdefault_permissionsZ	app_label_r
   Zverbose_name_pluralr    r    r    r!   Meta%   s   r(   )r$   r%   r&   r   Z
ForeignKeyr   r'   ZCASCADEreceiverZ	CharFieldZsubjectZ	TextFieldZcontentZSmallIntegerFieldcZANNOUNCEMENT_CATEGORYcategorysenderr   ZDateTimeFieldr   r   r(   __classcell__r    r    )r   r!   r	      s   r	   c             K   sR  ddl m}m} ddlm} ddlm} ddlm} ddl	m
} g }	g }
|j}|j}t|ttjkr|}| }|jj|jd}|rt|| r|js|j}|j}| r|j| d}| r|j| d	 }|rd
d |D }	n:t|ttjkr$|}|jj|jjd}|r$|d g}
|	|
 }x |D ]}||d||| q2W d S )Nr   )SUB_CATEGORY_PUBLICSUB_CATEGORY_PRIVATE)r   )prepare_mobile_notifications)get_current_user)get_user_model)
company_id)Zdepartment__in)Zarea__inc             S   s   g | ]}|qS r    r    ).0empr    r    r!   
<listcomp>E   s    z%announcement_save.<locals>.<listcomp>)pkZannouncement)mysite.mobile.choicesr.   r/   Zmysite.personnel.modelsr   Zmysite.mobile.tasksr0   Zmysite.base.threadlocalsr1   Zdjango.contrib.authr2   r   r+   r   r*   ZPUBLIC_ANNOUNCEMENTobjectsfilterr3   
isinstanceZis_superuserZget_auth_deptZget_auth_areaexistsallZdistinctZPRIVATE_ANNOUNCEMENTr)   idZdelay)r,   instancer   r.   r/   r   r0   r1   r2   Zpub_empsZprv_empZcommit_timeZins_categoryZsub_categoryZcurrent_userZempsZ	auth_deptZ	auth_arear5   Z	receiversr)   r    r    r!   announcement_save,   s>    

r@   c             K   s6   ddl m} ddlm} |jj||jd}|  d S )Nr   )AppNotification)CATEGORY_ANNOUNCEMENT)r+   source)Zmysite.mobile.modelsrA   r8   rB   r9   r:   r7   r"   )r,   r?   r   rA   rB   Znoticer    r    r!   announcement_deleteP   s    rD   )r,   )r   Z	django.dbr   Zdjango.db.models.signalsr   r   Zdjango.utils.translationr   r'   Zmysite.mobiler   r*   Z&mysite.personnel.models.model_employeer   Z!mysite.admin.abstract_cloud_modelr   r	   r@   rD   Zconnectr    r    r    r!   <module>   s    $