
    vg                        d Z ddlZddlZddl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mZ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mZ ddlmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA e=d        ZBe=d        ZCe=e<d               ZDe=d        ZEe=d        ZFe=d        ZGe= e?d      d               ZHe=d        ZIe=d        ZJe= e>d       d!               ZKe=d"        ZLe=d#        ZMe= e>d       d$               ZNe= e>d%      d&               ZOe= e>d       d'               ZPe=e<d(               ZQy))zW
requests.py

This module is used to register the endpoints to the attendance requests
    N)datedatetimetime)parse_qs)messages)ProtectedError)HttpResponseHttpResponseRedirectJsonResponse)redirectrender)render_to_string)reverse)gettext_lazy)AttendanceFiltersAttendanceRequestReGroup)AttendanceRequestFormBatchAttendanceFormBulkAttendanceRequestFormNewRequestForm)get_diff_dictget_employee_last_namepaginator_qryshift_schedule_today)
AttendanceAttendanceActivityAttendanceLateComeEarlyOutBatchAttendance)	early_out	late_come)choosesubordinatesclosest_numberseval_validatefiltersubordinatesget_key_instancesis_reportingmanager)EmployeeShiftEmployeeShiftDay)Employee)hx_request_requiredlogin_requiredmanager_can_enterpermission_required)notifyc                 `   | j                   j                  d      r%t        | j                   j                               }n
t               }| j                  dk(  rGt        | j
                        }|j                         r"|j                  d      }|j                          t        | dd|i      S )z]
    This method is used to render template to register new attendance for a normal user
    previous_urlinitialPOSTFcommitrequests/attendance/form.htmlform)	GETgetr   dictmethodr3   is_validsaver   )requestr7   instances      -/var/www/horilla/attendance/views/requests.pyrequest_attendancerA   ;   s    
 {{~&$W[[-=-=-?@$&~~$W\\2==?yyy.HMMO':VTNKK    c                 (   t         j                  j                  d      }t        | d|      }|t         j                  j                  | j                  d      z  }t        | j                  |      j                  }| j                  j                         }t        |      }t        t         |       |j                         D cg c]  \  }}|dgk(  s| }}}|D ]  }|j                  |        t        | dt         j                  j                               }|t         j                  j                  | j                        z  }|j                  d      }t        | j                  |      j                  }t               }t         j                  j                         }	|	j                         rd	}
nd
}
t        j                   t#        |d      j$                  D cg c]  }|j&                   c}      }t        j                   t#        |d      j$                  D cg c]  }|j&                   c}      }|j                  d      }t)        | |
t#        |d      t#        |d      ||||t*        j,                  d      S c c}}w c c}w c c}w )zD
    This method is used to view the attendances for to request
    Tis_validate_requestattendance.view_attendance)r>   permquerysetemployee_id__employee_user_idrE   unknown)rJ   )employee_id__is_activez&requests/attendance/view-requests.htmlz'requests/attendance/requests_empty.htmlN)requestsattendancesrequests_idsattendances_idsffilter_dict	gp_fields)r   objectsfilterr$   userr   r8   qs	urlencoder   r%   itemspopallexistsjsondumpsr   object_listidr   r   fields)r>   rM   previous_data	data_dictkeyvaluekeys_to_removerN   
filter_objcheck_attendancetemplater?   rO   rP   s                 r@   request_attendance_viewrj   L   s`   
 !!((  ) H ")H
 *,,33&-ll  4  H !h7::HKK))+M'Ij),,5OO,=Vjc59+AUcVNV c$)##'')K
 
 2 2 9 9&-ll !: ! K $$# % K $GKK=@@K"$J!))--/ ;<::%28T%B%N%NOOL jj%2;%E%Q%QRRO #  H %h5(d;(.$188	
 = W, 	P 	Ss   JJ J
!Jc                    | j                   j                  d      rxt        | j                   j                  d            rS| j                  j                  }| j                   j                  d      rt        | j                         }nt        d|i      }| j                  dk(  rt        | j                        }| j                  j                  d      |j                  _	        | j                  j                  d      |j                  _
        |j                         re|j                  d      }t        j                  | t        d             t!        t#        | d	d
|i      j$                  j'                  d      dz         S t#        | d	|dd      S | j                   j                  d      r%t)        | j                   j+                               }n
t)               }t-        | |d      }|j.                  d   j0                  t2        j4                  j7                  | j                        z  |j.                  d   _        | j                  j                  j8                  |j.                  d   _        | j                  dk(  rTt)        | j                        }t-        | |d      }|j.                  d   j0                  t2        j4                  j7                  | j                        z  |j.                  d   _        |j                         r|j<                  m|j<                  j                          t        j                  | t        d             t!        t#        | d	d
|i      j$                  j'                  d      dz         S t        j                  | t        d             t!        t#        | d	d
|i      j$                  j'                  d      dz         S t#        | d	|dd      S )z?
    This method is used to create new attendance requests
    bulkemployee_idr1   r3   	from_dateFr4   zAttendance request createdz)requests/attendance/request_new_form.htmlr7   utf-8#<script>location.reload();</script>T)r7   rl   attendance.change_attendance)employee_user_idzNew attendance request createdzUpdate request updated)r8   r9   r#   rV   employee_getr   r;   r3   r?   attendance_clock_in_dateattendance_dater<   r=   r   success_r	   r   contentdecoder   r:   r!   ra   rH   r)   rT   rU   r`   r2   new_instance)r>   employeer7   r?   s       r@   request_newr|      s/    {{v=1H#I<<,,;;??=),W[[AD,mX5NOD>>V#,W\\:D5<\\5E5Ek5RDMM2,3LL,<,<[,IDMM)}}99E92  !,H*IJ#C gffWo;<  74(
 	

 {{}%gkk&6&6&89gt-KLD*.+++h!!((',,(G+HDKK' *1)B)B)E)EDKK&~~gll+!'41OP.2kk/

(X%%,,gll,K/LM"+ ==?  ,!!&&(  !,L*MN#C gffWo;<  Wa(@&AB?TN '&&/78  3u% rB   c           	         t               }| j                  j                         }| j                  j                  d      }|j	                  d      d   dz   }d|v rd}nd|v rd}nd|v rd	}n	d
|v rd}nd}| j
                  dk(  rft        | j                        }|j                         rA|j                         }t        j                  | t        d             |d|j                   z  }t        | d||||d      S )Nr0   ?r   zattendance-updatez#updateAttendanceModalBodyzedit-validate-attendancez'#editValidateAttendanceRequestModalBodyzrequest-attendancez#objectUpdateModalTargetzattendance-createz#addAttendanceModalBodyz#objectCreateModalTargetr3   z&Attendance batch created successfully.z&batch_attendance_id=z0attendance/attendance/batch_attendance_form.html)r7   previous_form_datar0   	hx_target)r   r8   rX   r9   splitr;   r3   r<   r=   r   rv   rw   r`   r   )r>   r7   r   r0   r   batchs         r@   create_batch_attendancer      s    D ..0;;??>2L%%c*1-3Ll*0		#|	3=			-.			,-	.	~~"7<<0==?IIKEWa(P&QR$9%(("DD:"4("		
	 	rB   c                 \    t         j                  j                         }t        | dd|i      S )Nz'attendance/attendance/batches_list.htmlbatches)r   rT   r[   r   )r>   r   s     r@   get_batchesr      s0    %%))+G:Y<P rB   c                 T   | j                   j                  d      }	 t        j                  j	                  |      j                         }| j                  j                  d      s| j                  |j                  k(  rR| j                   j                  d      }||_	        |j                          t        j                  | t        d             nt        j                  | t        d             t!        t#        d            S #  t        j                  | t        d             Y 7xY w)	Nbatch_idr`   z+attendance.change_attendancegeneralsettingstitlez+Batch attendance title updated sucessfully.zYou don't have permission.Something went wrong.get-batches)r3   r9   r   rT   rU   firstrV   has_perm
created_byr   r=   r   rv   rw   infoerrorr   r   )r>   r   r   r   s       r@   update_titler     s    ||
+H<''..(.;AACLL!!"OP||u///LL$$W-EEKJJLWa(U&VWMM'1%A#BC GM*++<w"9 :;s   CD !D'z!attendance.delete_batchattendancec           
         	 t         j                  j                  |      j                         j	                         }t         j                  j                  |      j                         j                          t        j                  | t        | d             t)        t+        d            S # t        $ r}t               }|j                  D ]G  }|j                  t        t        |j                  j                  j!                                            I dj#                  |      }t        j$                  | t        d      j'                  |            f Y d }~d }~w t        j$                  | t        d             Y xY w)Nr   z% - batch has been deleted sucessfullyz, z!This {} is already in use for {}.r   r   )r   rT   rU   r   __str__deleter   rv   rw   r   setprotected_objectsaddstr_metaverbose_name
capitalizejoinr   formatr   r   )r>   r   
batch_nameemodel_verbose_names_setobjmodel_names_strs          r@   delete_batchr     s8   <$,,33x3@FFHPPR
&&(&399;BBDQ*%JKL	
  GM*++  	"%%&& 	UC#''Acii.D.D.O.O.Q,R(ST	U ))$;<1299*oV	
 	<w"9 :;s   BB0 0	F9B!E$Fc                    t         j                  j                  |      }| j                  j                  d      r%t	        | j                  j                               }nt	        |      }| j                  dk(  r;t	        | j                  t        j                  |            }|j                  d   j                  j                  j                  ddd	       |j                  d
   j                  j                  j                  ddd	       |j                  d   }|j                  d
   }|t        |      s|j                  dd       |t        |      s|j                  d
d       |j!                         r:|j#                         }|j$                  |_        |j&                  |_        |j(                  dk7  rQt+        j,                  |j/                               |_        |j2                  |_        d|_        |j#                          nd|_        d|_        |j#                          t9        j:                  | t=        d             |j$                  }|j$                  j>                  j@                  r	|j$                  j>                  j@                  jB                  }tE        |      }	tG        jH                  | jJ                  ||jL                   d|	 d|jN                   dd|jL                   d|	 d|jN                   d|jL                   d|	 d|jN                   dd|jL                   d|	 d|jN                   d|jL                   d|	 d|jN                   dtQ        d      d |j&                   z   d!"	       tS        tU        | d#||d$      jV                  jY                  d%      d&z         S tU        | d#||d$      S )'zL
    This method is used to store the requested changes to the instance
    r   r0   r1   r?   r3   work_type_idzw-100z@height:50px;border-radius:0;border:1px solid hsl(213deg,22%,84%))classstyleshift_idzThis field is requiredcreate_requestTFz"Attendance update request created. z:'s                          attendance update request for z is createdu4   تم إنشاء طلب تحديث الحضور لـ z                         u   في zKDie Anfrage zur Aktualisierung der Anwesenheit von                         u&                                für den z wurde erstelltu?   Se ha creado la solicitud de actualización de asistencia para z                          z el u+   La demande de mise à jour de présence de 	 pour le u    a été crééerequest-attendance-view?id=checkmark-circle-outline	recipientverbverb_arverb_deverb_esverb_frr   iconr6   )r7   attendance_idro   rp   )-r   rT   r9   r8   r   r:   r;   r3   copyra   widgetattrsupdatedatalen	add_errorr<   r=   rm   r`   request_typer]   r^   	serializerequested_datarequest_descriptionrE   is_validate_request_approvedr   rv   rw   employee_work_inforeporting_manager_idrr   r   r.   sendrV   employee_first_nameru   r   r	   r   rx   ry   )
r>   r   
attendancer7   r   r   r?   r{   reporting_manageruser_last_names
             r@   attendance_request_changesr   3  s   
 ##''='9J{{~&$W[[-=-=-?@$j9 ~~$W\\DIIj<QRN#**0077 [	
 	J&&,,33 [	
 yy099Z(s<'8NN>+CD3x=NN:'?@==? yy{H#-#9#9H $--HK&&*::,0JJx7I7I7K,L
)191M1M
.15
.!8=5/3,Wa(L&MN!--H%%88MM**==RRcc " "8
!CLL/$889>:J K99C9S9S8TT_aRS[SoSoRp q')z/I/I.JL!556a7G H&&0&@&@%AR ^^f^z^z]{ |)*$z/I/I.JLI(JfJfIg h)*)J4N4N3OO_a$%>?Z]]O,-3!$  3!MB '&&/78  '6 rB   c                    t         j                  j                  |      }|j                         }ddddddddddd
}|j                  dk(  r|}|}nt        j                  |j                        }| j                  j                  d      }|j                  x}}|r"t        t        j                  |      |      \  }}t        | dt        ||t               ||||d      S )zj
    This method to validate the requested attendance
    args:
        attendance_id : attendance id
    r   N)
rm   ru   rt   attendance_clock_inattendance_clock_outattendance_clock_out_dater   r   attendance_worked_hourbatch_attendance_idr   rO   z(requests/attendance/individual_view.html)r   r   previousnextrO   )r   rT   r9   r   r   r]   loadsr   r8   pkr"   r   r   )	r>   r   r   
first_dict
empty_data
other_dictrequests_ids_jsonprevious_instance_idnext_instance_ids	            r@   validate_attendance_requestr     s     ##''='9J%%'J$(# $%)"&#J "22

ZZ
 9 9:
7.8mm;+1@JJ()=2
.. 2!*j*E$,$-	

 
rB   rq   c                 6	   t         j                  j                  |      }|j                  }|j                  }|j
                  }d|_        d|_        d|_        d|_	        |j                          |j                  t        j                  |j                        }|d   dk(  rdn|d   |d<   |d   dk(  rdn|d   |d<   t        j                  j                  |      j                  d)i | t         j                  j                  |      }|j                          |j                   |j"                  d|_        t$        j                  j                  |j&                  |||      }|r>|j                  |j&                  |j                  |j                  |j
                         nKt$        j                  j)                  |j&                  |j                  |j                  |j
                         |j*                  }|j                  j-                  d	      j/                         }	t0        j                  j                  |	
      }	t3        |	|      \  }
}}|j
                  rt5        ||||       |j                   rt7        ||||       t9        j:                  | t=        d             |j&                  }t?        j@                  | jB                  |jD                  d|j                   dd|j                   d|j                   dd|j                   d|j                   dtG        d      d|jH                   z   d	       |j&                  jJ                  jL                  r	|j&                  jJ                  jL                  jD                  }tO        |      }t?        j@                  | jB                  ||jP                   d| d|j                   dd|jP                   d| d|j                   d|jP                   d| d |j                   d!d"|jP                   d| d#|j                   d$|jP                   d| d%|j                   d&tG        d      d|jH                   z   d	       tS        | jT                  j                  d'd(            S )*A
    This method is used to validate the attendance requests
    r   TFNr   Noner   rm   ru   clock_in_dateclock_in%Adayr   shift
start_timeend_timer   $Attendance request has been approvedz(Your attendance request for              is validateduE   تم التحقق من طلب حضورك في تاريخ             u2   Ihr Anwesenheitsantrag für das Datum                 wurde bestätigtzDSe ha validado su solicitud de asistencia             para la fecha u4   Votre demande de présence pour la date                 est validéer   r   r   r   r   z+'s                  attendance request for 0   تم التحقق من طلب الحضور لـ z                     في Die Anwesenheitsanfrage von 
    für den  wurde validiertz=Se ha validado la solicitud de asistencia de                 	 para el    La demande de présence de r       a été validéeHTTP_REFERER/ )+r   rT   r9   ru   rt   r   attendance_validatedr   rE   r   r=   r   r]   r   rU   r   r   r   r   rm   creater   strftimelowerr(   r   r    r   r   rv   rw   r.   r   rV   rr   r   r`   r   r   r   r   r
   META)r>   r   r   prev_attendance_dateprev_attendance_clock_in_dateprev_attendance_clock_inr   activityr   r   minimum_hourstart_time_secend_time_secr{   r   r   s                   r@   #approve_validate_attendance_requestr    s    ##''='9J%55$.$G$G!)==&*J#.2J+%*J"%)J"OO  ,J$=$=> 45?  67 	-. 9:fD  ;< 	23
 	!!]!3::L^L''++}+=
 	''///7*.
'%--44"..07-	 5 
 OO&22 * : :(AA#77	   &&--&22 * : :(AA#77	 .  E

$
$
-
-d
3
9
9
;C

"
"
&
&3
&
/C1Eu2.L., %%>LPU	
 &&>LPU	
 Wa FGH%%H
KK++''(7''(*''((9;%5568''(723Z]]O6LL'  00EE""55JJ[[ 	 0
;LL'001>2B C**4*D*D)E]TFxGcGcFd e z'A'A&BD283O3O2P Q 
:+E+E*FFVX--.a/?yIcIcHdf1(2N2N1O P 	**D*D)EEVX67D:PP+	
    0 0 EFFrB   c                    	 t         j                  j                  |      }|j                  j                  | j
                  k(  s't        |       s| j
                  j                  d      rd|_        d|_	        d|_
        d|_        d|_        |j                          |j                  dk(  r0|j                          t        j                   | t#        d             nt        j                   | t#        d             |j                  }t%        j&                  | j
                  |j                  d|j(                   d	d
|j(                   d|j(                   dd|j(                   dd|j(                   dd       t1        | j2                  j                  dd            S # t         j*                  t,        f$ r" t        j.                  | t#        d             Y _w xY w)z:
    This method is used to cancel attendance request
    r   rq   FNr   $The requested attendance is removed.z$Attendance request has been rejectedYour attendance request for  is rejected2   تم رفض طلبك للحضور في تاريخ    Ihre Anwesenheitsanfrage für  wurde abgelehnt#Tu solicitud de asistencia para el  ha sido rechazada#   Votre demande de présence pour le     est rejetéeclose-circle-outliner   r   r   r   r   r   r   Attendance request not foundr   r   )r   rT   r9   rm   rr   rV   r&   r   r   rE   r   r   r   r=   r   r   rv   rw   r.   r   ru   DoesNotExistOverflowErrorr   r
   r   )r>   r   r   r{   s       r@   cancel_attendance_requestr  8  s   
C''++}+=
""33w||C"7+||$$%CD6;J3-2J*-1J*(,J%&*J#OO&&*::!!#  !,R*ST  !,R*ST!--HKK"333J4N4N3O|\LZMgMgLhi89S9S8TTde=j>X>X=YYkl=j>X>X=YYfg+	   0 0 EFF ##]3 Cw"@ ABCs   E=F$ $8GGc                    | j                   j                  d      }| j                   j                  d      }|rt        j                  |      ni }|dk(  r| j                  j                  d      r6t        | j                   t        j                  j                  d            }nlt        | j                   t        j                  j                  | j                  d      t        j                  j                  | j                  d	      z        }|j                  }|D cg c]  }t        |j                         }}|j                         }||d
}	t        |	      S y c c}w )NpagerU   r[   rF   TrD   )rH   rI   )Gemployee_id__employee_work_info__reporting_manager_id__employee_user_idrE   )employee_idstotal_count)r8   r9   r]   r   rV   r   r   r   rT   rU   rW   r   r`   countr   )
r>   page_numberfilteredfiltersemployee_filterfiltered_employeesempr  r  contexts
             r@   $select_all_filter_attendance_requestr'  `  s4   ++//&)K{{x(H&.djj"BGe<<  !=>/#++22t2LO
 0#++2229,,TX 3  $$++\c\h\h(, , 	O -///ABCFFBB(..0#/LG$$7 , Cs   #E"c                 ^	   | j                   d   }t        j                  |      }|D ]y  }t        j                  j                  |      }|j                  }|j                  }|j                  }d|_	        d|_
        d|_        d|_        |j                          |j                  t        j                  |j                        }|d   dk(  rdn|d   |d<   |d   dk(  rdn|d   |d<   t        j                  j                  |      j                   d)i | t        j                  j                  |      }|j                          |j"                  |j$                  d|_	        t&        j                  j                  |j(                  |||	      }|r>|j!                  |j(                  |j                  |j                  |j                  	       nKt&        j                  j+                  |j(                  |j                  |j                  |j                  	       |j,                  }	|j                  j/                  d
      j1                         }
t2        j                  j                  |
      }
t5        |
|	      \  }}}|j                  rt7        ||||	       |j"                  rt9        ||||	       t;        j<                  | t?        d             |j(                  }tA        jB                  | jD                  |jF                  d|j                   dd|j                   d|j                   dd|j                   d|j                   dtI        d      d|jJ                   z   d	       |j(                  jL                  jN                  sq|j(                  jL                  jN                  jF                  }tQ        |      }tA        jB                  | jD                  ||jR                   d| d|j                   dd|jR                   d| d|j                   d |jR                   d| d!|j                   d"d#|jR                   d| d$|j                   d%|jR                   d| d&|j                   d'tI        d      d|jJ                   z   d	       | tU        d(      S )*r   idsr   TFNr   r   r   r   r   r   r   r   r   z,Your attendance request for                 r   uI   تم التحقق من طلب حضورك في تاريخ                 u6   Ihr Anwesenheitsantrag für das Datum                 r   zHSe ha validado su solicitud de asistencia                 para la fecha u8   Votre demande de présence pour la date                 r   r   r   r   r   r   z-'s                    attendance request for r   z                     r   r   r   r   zASe ha validado la solicitud de asistencia de                     r   r   r   r   rv   r   )+r3   r]   r   r   rT   r9   ru   rt   r   r   r   rE   r   r=   r   rU   r   r   r   r   rm   r   r   r   r   r(   r   r    r   r   rv   rw   r.   r   rV   rr   r   r`   r   r   r   r   r	   )r>   r)  r   r   r  r  r  r   r  r   r   r  r  r  r{   r   r   s                    r@   bulk_approve_attendance_requestr*    s    ,,u
C
**S/C r''++}+=
)99(2(K(K%#-#A#A *.
'26
/).
&)-
&$$0!ZZ
(A(ABN ""89VC #$:; 12 ""=>&H #$?@ 67
 %%%7>>PP#++//=/AJOO++333;.2J+)1188&22 4;1	 9 H  * 6 6$.$>$>","E"E';;	    #**11 * 6 6$.$>$>","E"E';;	 2  ##((11$7==?&&**s*35I56
2nl )))%	 **)%	 	!$J"KL))LL//++,M;++,.++,,=?)99:<++,M;67D:PP+	
  !!44II&&99NN__  4J?NKK+ 445Q~6F G,,6,F,F+G}VJ8KgKgJh i#$F:+E+E*FH6x7S7S6T U#$Jz/I/I.JJZ\112!N3C9ZMgMgLhj5h6R6R5S T#$Ij.H.H-IIZ\ !:;Z]]O>TT/Grf 	""rB   zattendance.delete_attendancec                    | j                   d   }t        j                  |      }|D ]  }	 t        j                  j                  |      }|j                  j                  | j                  k(  s't        |       s| j                  j                  d      rd|_        d|_        d|_        d|_        d|_        |j!                          |j                  dk(  r0|j#                          t%        j&                  | t)        d             nt%        j&                  | t)        d             |j                  }t+        j,                  | j                  |j                  d	|j.                   d
d|j.                   d|j.                   dd|j.                   dd|j.                   dd        t7        d      S # t        j0                  t2        f$ r# t%        j4                  | t)        d             Y w xY w)z?
    This method is used to delete bulk attendance request
    r)  r   rq   FNr   r
  z%The requested attendance is rejected.r  r  r  r  r  r  r  r  r  r  r  r  rv   )r3   r]   r   r   rT   r9   rm   rr   rV   r&   r   r   rE   r   r   r   r=   r   r   rv   rw   r.   r   ru   r  r  r   r	   )r>   r)  r   r   r{   s        r@   bulk_reject_attendance_requestr,    s    ,,u
C
**S/C !G 	G#++//=/AJ&&777<<G&w/<<(()GH:?
716
.15
.,0
)*.
'!**.>>%%'$$Wa0V.WX$$#J!K &11LL&777
8R8R7SS_`PQ[QkQkPlm<Z=W=W<XXhiA*B\B\A]]opA*B\B\A]]jk/	-!GD 	"" ''7 	GNN7A&D$EF	Gs   E=F778G32G3c                    t         j                  j                  |      }|j                         }| j                  j                  d      r| j                  j                         }n=|j                  dk7  rt        j                  |j                        }|j                  |d<   t        |      }|j                  |j                  _        | j                  j                  d      }| j                  dk(  rt        | j                   t#        j"                  |            }|j%                         r|j'                         }|j(                  |_        |j                  |_        |j                  dk7  rQt        j*                  |j                               |_	        |j                  |_
        d	|_        |j'                          nd
|_        d	|_        |j'                          t1        d|j                   d      S t3        | d||d      S )zP
    This method is used to edit and update the validate request attendance
    r   r0   r   r   r1   HTTP_HX_TARGETr3   r   TFz
                                <script>
                                $('#editValidateAttendanceRequest').removeClass('oh-modal--show');
                                $('[data-target="#validateAttendanceRequest"][data-attendance-id=a  ]').click();
                                $('#messages').html(
                                `
                                <div class="oh-alert-container">
                                <div class="oh-alert oh-alert--animated oh-alert--success">
                                Attendance request updated.
                                </div>
                                </div>
                                `
                                )
                                </script>
                                z$requests/attendance/update_form.html)r7   r   )r   rT   r9   r   r8   r:   r   r]   r   r   r   r   r`   r?   r   r;   r3   r   r<   r=   rm   r^   rE   r   r	   r   )r>   r   r   r2   r7   r   r?   s          r@   edit_validate_attendancer/  /  s    ##''='9J""$G{{~&++""$""&66jj!:!:;G)3)G)G%& 1D!}}DMM  !12I~~$W\\DIIj<QR==?yy{H#-#9#9H $--HK&&*::,0JJx7I7I7K,L
)191M1M
.15
.!8=5/3,b cmboboap q!$ " .I. rB   c                 N   | j                   j                  d      }d}|r,t        j                  j                  |      }|j                  }t               }| j                   j                  d      r.t        | j                   j                  d            r
t               }t        j                  j                         |j                  d   _        d|j                  d   j                  j                  d<   ||j                  d   _        t        d|d   |d	      }t!        |       S )
z+
    method used to get employee shift
    rm   Nr   rl   r   zload,changez
hx-triggerz#requests/attendance/form_field.html)fieldr   )r8   r9   r)   rT   	get_shiftr   r#   r   r'   r[   ra   rH   r   r   r2   r   r	   )r>   rm   r   r{   r7   r   s         r@   get_employee_shiftr3  h  s     ++//-0KE##'';'7""D{{v=1H#I(*'4'<'<'@'@'BDKK
$9FDKK
""((6&+DKK
#-*%	
H 8*&&rB   )R__doc__r   r]   r   r   r   urllib.parser   django.contribr   django.db.modelsr   django.httpr	   r
   r   django.shortcutsr   r   django.template.loaderr   django.urlsr   django.utils.translationr   rw   attendance.filtersr   r   attendance.formsr   r   r   r   attendance.methods.utilsr   r   r   r   attendance.modelsr   r   r   r   attendance.views.clock_in_outr   r    base.methodsr!   r"   r#   r$   r%   r&   base.modelsr'   r(   employee.modelsr)   horilla.decoratorsr*   r+   r,   r-   notifications.signalsr.   rA   rj   r|   r   r   r   r   r   r   r  r  r'  r*  r,  r/  r3  r   rB   r@   <module>rG     s)     ) ) ! # + H H - 3  6 J    ?  8 $  ) L L  ? ?D G  GT  D   , ,& 89, : ,. ^ ^B ) )X 12qG 3 qGh $G $GN  %  %F 12y# 3 y#x 12(# 3 (#V 124 3 4n '  'rB   