
    si                         d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ  ej"                  d      r  e	ee	      d
        Z e	ee	      d        Zd Zy)    N)apps)post_migrate	post_save
pre_deletepre_save)receiver)gettext_lazy)get_horilla_model_classLeaveRequest
attendance)senderc                 p   t        dd      }|j                  |j                  k(  r<|j                  |j                  k7  r#|j                  |_        t
        t        |          |j                         }|j                  dk(  rU|D ]N  }	 |j                  j                  ||j                        j                         r5|j                  j                  ||j                        j                         n |       }|j                  |_        d|_        ||_        |j                  |k(  r|j                  dk(  s|j                  |k(  r|j                  dk(  rd	nd
|_        |j                  |k(  r|j                  dk(  s|j                  |k(  r|j                  dk(  rdnd}||_        ||_        |dk(  rdn
t)        d      |_        |j                          Q y|D ]8  }|j                  j                  d||j                        j1                          : y# t,        $ r}t/        |       Y d}~d}~ww xY w)z;
        Overriding LeaveRequest model save method
        r   workrecords)	app_labelmodelapproved)dateemployee_idT
first_halfsecond_halfg      ?g        CONFABSLeavez$Half day Attendance need to validateN)is_leave_recordr   r   )r
   
start_dateend_dateend_date_breakdownstart_date_breakdownsuperr   saverequested_datesstatusobjectsfilterr   existsfirstr   leave_request_idday_percentagework_record_typer   _message	Exceptionprintdelete)	r   instance_kwargsWorkRecordsperiod_datesr   
work_entryr#   es	            1/var/www/python-projects/worksol/leave/signals.pyleaverequest_pre_saver7      sG   
 ."-
 8#4#44++x/L/LL*2*G*GH',.0//1??j($ *) '..55!%(0(<(< 6  !&(#	 $++22!%(0(<(< 3   %'
 )]  .6-A-AJ*15J.2:J/ $..$6$99\I#,,4$77=H	 
 " - $..$6$99\I#,,4$77=H	 
 #  39J/&*JO "U?  EF &
 OO%O*Z % ##**$( ( 4 4 +  &(	 ! !HHs   
E
H	H5H00H5c                 d    ddl m} |j                  j                  |      j	                         }y )Nr   r2   )r(   )attendance.modelsr2   r$   r%   r/   )r   r0   kwargsr2   work_recordss        r6   leaverequest_pre_deleter=   T   s'    1"**1181LSSU    c                    | j                   dvry t        j                  d      sy 	 ddlm} ddlm} |j                  j                  dd      }|j                         sy |j                  j                         }i }|D ]*  }|j                         D ]  }|j                  |f}	|||	<    , g }
|D ]D  }|j                  |j                  |j                  f      }|s-||_        |
j!                  |       F |
r8|j                  j#                  |
dgd	
       t%        dt'        |
       d       y y # t(        $ r}t%        d|        Y d }~y d }~ww xY w)N)r   leaver   r   r9   r   T)r   leave_request_id__isnullr(   i  )
batch_sizezSuccessfully updated z$ work records with leave informationz"Error in leave/work records sync: )labelr   is_installedr:   r2   leave.modelsr   r$   r%   r&   allr"   r   getr   r(   appendbulk_updater.   lenr-   )r   r;   r2   r   r<   leave_requestsdate_leave_mapr@   r   keyrecords_to_updaterecordleave_requestr5   s                 r6    add_missing_leave_to_workrecordsrQ   \   sy   ||22\*"81-"**11 4 2 
 ""$%--113# 	,E--/ ,(($/&+s#,	,
 " 	1F*..0B0BFKK/PQM*7'!((0		1 ++!$6#7C ,  ',=(>'??cd	   821#6778s%   9D2 !A;D2 AD2 2	E;EE)	threadingdjango.appsr   django.db.models.signalsr   r   r   r   django.dispatchr   django.utils.translationr	   r+   horilla.methodsr
   rE   r   rD   r7   r=   rQ    r>   r6   <module>rY      sm      R R $ 6 3 %4\"h|,B -BH j.V /V(8r>   