B
    <3c                 @   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Zd dlmZ d dlmZ d d	lmZmZmZ d d
lmZ G dd deZded ddded dddded dddded ddded ddded ddfZededededededgZdS )    )models)ValidationError)gettext_lazy)cache)MinValueValidatorN)AdminRuntimeWarning)db_const)LEAVE_UNITSBOOLEANSPREFIX_SUFFIX)AbstractCloudc                   s   e Zd ZejedejdZej	edde
dgdZejedded	Zejed
ded	ZejedddZejedddedZejedddedZdd Zdd Z fddZd fdd	ZG dd dZ  ZS )LeaveCategoryZleaveCategory_field_name)Z
max_lengthZleaveCategory_field_minimumUnitg      ?r   )defaultZ
validatorsZleaveCategory_field_unit   )r   choicesZleaveCategory_field_roundOff   Z leaveCategory_field_reportSymbol   ZleaveCategory_field_prefixT)Znullr   r   ZleaveCategory_field_suffixc             C   s   d | jS )Nz{0})formatcategory_name)self r   >G:\easytimepro\master/mysite/att\models\model_leavecategory.py__str__   s    zLeaveCategory.__str__c             C   sl   t jj| j| jd}|r4|d j| jkr4ttdt jj| j| jd}|rh|d j| jkrhttdd S )N)Zcategory_name__exact
company_idr   z(this_category_leave_type_already_exists.)Zreport_symbol__exactr   z"this_report_symbol_already_exists.)	r   objectsfilterr   r   Zpkr   _report_symbol)r   objr   r   r   clean    s    zLeaveCategory.cleanc                s\   ddl m} tt|   t| j}|| ttj	j
|ddd}td| | d S )Nr   )C_LEAVE_CLASS)r   idr   leave_category_)mysite.att.global_cacher    superr   savestrr   refreshlistr   r   values_listr   set)r   r    r   lcs)	__class__r   r   r%   ,   s    

zLeaveCategory.saveNFc                s  dd l }ddlm} ddlm} d}| jr<| jtkr<td}ddlm	} |j
j| d}|rbtd}|rnt|| j }	|d	t|   fd
d|j
j| jdjdddD }
|	s|
rttd| j|j
j| j| jdjddd}xV|D ]N}t|}y|| j }W n   d }Y nX |dkr|rttd| jqW ddlm} tt| || t| j}|| ttj
j|ddd}td| | d S )Nr   )LeaveSchedule)LeaveFormula Z+the_default_category_name_cannot_be_deleted)Leave)categoryZ#the_used_category_cannot_be_deletedz{{{0}}}c                s   g | ]}  |r|qS r   )search).0i)formula_patternr   r   
<listcomp>E   s    z(LeaveCategory.delete.<locals>.<listcomp>)Zcompany__idZformulaT)ZflatZleave_category_already_in_use)Zleave_details__containsr   leave_details0z'The leave category {} is already in use)r    )r   r!   r   r"   )reZ%mysite.att.models.model_leavescheduler-   Zmysite.payroll.modelsr.   r   DEFAULT_LEAVE_NAMEr   Zmysite.att.models.model_leaver0   r   r   r   Zleaveformula_setallcompiler   r&   r   r)   yamlloadr#   r    r$   r   deleter'   r(   r   r*   )r   ZusingZkeep_parentsr9   r-   r.   messager0   ZleavesZleave_formulaZall_formulaZlsr7   dr1   r    r   r+   )r,   )r5   r   r?   4   sD    






zLeaveCategory.deletec               @   s$   e Zd ZdgZejZedZeZ	dS )zLeaveCategory.Metar!   Zatt_model_leaveCategoryN)
__name__
__module____qualname__Zorderingr   Z	APP_LABELZ	app_labelr   Zverbose_nameZverbose_name_pluralr   r   r   r   Meta\   s   rE   )NF)rB   rC   rD   r   Z	CharFieldr   r   ZMAX_LEAVE_ALIASr   Z
FloatFieldr   minimum_unitZSmallIntegerFieldr	   Zunitr
   Z	round_offr   r   prefixsuffixr   r   r%   r?   rE   __classcell__r   r   )r,   r   r      s   (r   z%sZleaveCategory_default_sickLeaveZSL)r   r   Z!leaveCategory_default_casualLeaveZCALg      ?)r   r   rF   Z%leaveCategory_default_maternity_leaveZMLZ)leaveCategory_default_compassionate_leaveZCOLZ"leaveCategory_default_annual_leaveZALZ#leaveCategory_default_business_tripZBT)Z	django.dbr   Zdjango.formsr   Zdjango.utils.translationr   r   Zdjango.core.cacher   Zdjango.core.validatorsr   r=   Zmysite.admin.exceptionsr   Z
mysite.attr   Zmysite.att.models_choicesr	   r
   r   Z!mysite.admin.abstract_cloud_modelr   r   ZDEFAULT_LEAVE_DATAr:   r   r   r   r   <module>   s&   Q