B
    ?c                 @   s   d dl 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 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlT d dlmZ G dd deZee	jeddd ZdS )    N)models)gettext_lazy)MinValueValidator)signals)receiver)AdminRuntimeWarning)AbstractCloud)db_const)	APP_LABEL)*)model_attschedulec                   s  e Zd ZejedejdZej	edde
dZejeddedgdZejedd	d	d
Zej	eddedZejedd	d	d
Zej	eddedZej	eddedZejeddddZdd Zedd Zedd Z fddZd fdd	ZG dd dZ  ZS )AttShiftZattShift_field_alias)Z
max_lengthZattShift_field_cycleUnit   )defaultchoicesZattShift_field_cycle)r   Z
validatorsZwork_on_weekend_asT)r   Zblankr   Zwork_on_day_off_asZattShift_field_autoShiftZfield_isDefaultF)r   Zeditablec             C   s   d | jS )Nz{0})formatalias)self r   9G:\easytimepro\master/mysite/att\models\model_attshift.py__str__    s    zAttShift.__str__c             C   sZ   ddl m} xH|D ]@}| }|jd|_|jd|_| |_||_||_|  qW d S )Nr   )ShiftDetailz%H:%M:%S)	#mysite.att.models.model_shiftdetailr   in_timestrftimeout_timeshift	day_indextime_intervalsave)shift_objectZdayr   r   tZtmputsr   r   r   add_time_interval#   s    
zAttShift.add_time_intervalc             C   s"   ddl m} |jj| d  d S )Nr   )r   )r   )r   r   objectsfilterdelete)r    r   r   r   r   delete_time_interval/   s    zAttShift.delete_time_intervalc                s   ddl m} | jdkr(| jr(ttd| js\tjj| j	| j
d}|r\td| j	 }t|tjjj| jd }|rttdtt| jf | t| jj}|| d S )	Nr   )C_ATT_SHIFTTZdefault_shift_cannot_be_edited)r   
company_idZshift_name_repeat)shift_idZ0shift_is_already_assigned_to_employees_cant_edit)Zmysite.att.global_cacher'   
is_defaultZpkr   _r   r#   r$   r   r(   r   ZAttScheduleexistssuperr   strZcompanyidZrefresh)r   argsr'   r   messageZget_scheduler(   )	__class__r   r   r   4   s    zAttShift.saveNc                sR   d}| j rtd}|rt|| j }| r<ttdtt| || d S )N Zdefault_shift_cannot_be_removedZshift_is_already_in_use)	r*   r+   r   Zattschedule_setallr,   r-   r   r%   )r   ZusingZkeep_parentsr1   Zobj_set)r2   r   r   r%   D   s    
zAttShift.deletec               @   s   e Zd ZeZedZeZdS )zAttShift.MetaZatt_model_shiftN)__name__
__module____qualname__r
   Z	app_labelr+   Zverbose_nameZverbose_name_pluralr   r   r   r   MetaP   s   r8   )NF) r5   r6   r7   r   Z	CharFieldr+   r	   ZMAX_SHIFT_ALIASr   ZSmallIntegerFieldZCYCLE_UNITSZ
cycle_unitZIntegerFieldr   Zshift_cycleZBooleanFieldZwork_weekendZSHIFT_OT_TYPEZweekend_typeZwork_day_offZday_off_typeZBOOLEANSZ
auto_shiftr*   r   staticmethodr"   r&   r   r%   r8   __classcell__r   r   )r2   r   r      s   r   )senderc          	   K   s   | dd }|jdkrdnd }|ry|jdkrddlm}m} |jj |jdd}g }xHtddD ]:}	|t	
d	ddt	
ddd|	||j|jd
}
||
 q`W |r|j| W n   Y nX dS d S )NinstanceZWeekoffr   Tr   )TimeIntervalr   )r(   r*      	   )r   r   r   Zweekend_dayr)   Ztime_interval_id)getr   r*   mysite.att.modelsr=   r   r#   r(   rangedatetimetimer/   appendZbulk_create)signalr;   Zcreatedkwargsr<   Zday_typer=   r   ZobjsiZ_objr   r   r   save_signal_receiverV   s"    
rI   )rC   Z	django.dbr   Zdjango.utils.translationr   r+   Zdjango.core.validatorsr   Zdjango.db.modelsr   Zdjango.dispatch.dispatcherr   Zmysite.admin.exceptionsr   Z!mysite.admin.abstract_cloud_modelr   Z
mysite.attr	   Zmysite.att.db_constr
   Zmysite.att.models_choicesrA   r   r   Z	post_saverI   r   r   r   r   <module>   s   B