o
    eGf                     @   s   d dl mZ d dlmZ e ZddlmZ d dlmZ dZ	dZ
dZd	Zd
Ze	dfe
dfedfedfdddfZdZG dd dejZG dd dejZdS )    )models)get_user_model   )LeaveManager)	timedeltasickzhalf day	emergencystudyzmaternity leavez
Sick LeavezHalf Day LeavezEmergency LeavezMaternity Leave)znormal leavezNormal Leave)zcasual leavezCasual Leave)z
paid leavez
Paid Leave   c                   @   s(  e Zd ZejeejddZejddddZ	ejddddZ
ejededddZejd	d
dddZejdedddZejdddZejddZejddZejdddZejdddZe ZG dd dZdd Zedd Zedd Z edd Z!edd Z"ed d! Z#ed"d# Z$ed$d% Z%d&S )'Leaver   )	on_deletedefaultz
Start DateT)verbose_namenullblankzEnd Date   )choices
max_lengthr   r   r   zReason for Leave   )r   r   r   r   zLeave days per year counter)r   r   r   r      pending)r   r   F)r   )auto_nowauto_now_addc                   @   s   e Zd ZdZdZdgZdS )z
Leave.Metar   Leavesz-createdN)__name__
__module____qualname__r   verbose_name_pluralordering r   r   $/var/www/html/humari/leave/models.pyMeta3   s    
r!   c                 C   s   d | j| jS )Nz	{0} - {1})format	leavetypeuserselfr   r   r    __str__:   s   zLeave.__str__c                 C   s@   d}| j }| j}||krd S ||krdS || tdd }|jS )N r   )days)	startdateenddater   r)   )r&   
days_countr*   r+   datesr   r   r    
leave_days=   s   zLeave.leave_daysc                 C   
   | j dkS )NT)is_approvedr%   r   r   r    leave_approvedI      
zLeave.leave_approvedc                 C   s"   | j sd| _ d| _|   d S d S )NTapprovedr0   statussaver%   r   r   r    approve_leaveM   
   zLeave.approve_leavec                 C   s"   | j rd| _ d| _|   d S d S )NFr   r4   r%   r   r   r    unapprove_leaveT   r8   zLeave.unapprove_leavec                 C   (   | j s| j sd| _ d| _|   d S d S )NF	cancelledr4   r%   r   r   r    leaves_cancel]   
   zLeave.leaves_cancelc                 C   r:   )NFrejectedr4   r%   r   r   r    reject_leaven   r=   zLeave.reject_leavec                 C   r/   )Nr>   )r5   r%   r   r   r    is_rejectedw   r2   zLeave.is_rejectedN)&r   r   r   r   
ForeignKeyUser_ProfileCASCADEr$   	DateFieldr*   r+   	CharField
LEAVE_TYPESICKr#   reasonPositiveIntegerFieldDAYSdefaultdaysr5   BooleanFieldr0   is_paidDateTimeFieldupdatedcreatedr   objectsr!   r'   propertyr.   r1   r7   r9   r<   r?   r@   r   r   r   r    r      s:    





r   c                   @   s:   e Zd ZejddZejdddZeje	ej
dddZdS )	HolidayzHoliday Date)r   zHoliday Namer   )r   r   T)r   r   r   N)r   r   r   r   rD   holiday_daterE   holiday_namerA   rB   rC   r$   r   r   r   r    rS   ~   s    rS   N)	django.dbr   django.contrib.authr   rB   managersr   datetimer   rG   HALF_DAY	EMERGENCYSTUDY	MATERNITYrF   rJ   Modelr   rS   r   r   r   r    <module>   s*    
`