
    vgf                     t   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mZmZmZ d d	lmZmZmZmZmZmZmZmZmZ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)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d ZAd ZBd ZCd ZD G d de      ZE G d de      ZF G d de      ZG G d de      ZH G d de      ZI G d d e      ZJ G d! d"e      ZK G d# d$e      ZL G d% d&e      ZM G d' d(e      ZN G d) d*e      ZO G d+ d,e      ZP G d- d.e      ZQ G d/ d0e      ZR G d1 d2e      ZS G d3 d4e      ZT G d5 d6e      ZU G d7 d8e      ZV G d9 d:e      ZW G d; d<e      ZX G d= d>e      ZY G d? d@e      ZZ G dA dBe      Z[ G dC dDe      Z\ G dE dFe      Z] G dG dHe      Z^ G dI dJe      Z_ G dK dLe      Z` G dM dNe      Za G dO dPe      Zb G dQ dRe      Zc G dS dTe      Zd G dU dVe      Ze G dW dXe      Zf G dY dZe      Zg G d[ d\e      Zhy])^    )HttpResponse)method_decorator)DjangoFilterBackend)PageNumberPagination)IsAuthenticated)Response)APIView)RotatingShiftAssignFiltersRotatingWorkTypeAssignFilterShiftRequestFilterWorkTypeRequestFilter)Company
DepartmentEmployeeShiftEmployeeShiftScheduleJobPositionJobRoleRotatingShiftRotatingShiftAssignRotatingWorkTypeRotatingWorkTypeAssignShiftRequestWorkTypeWorkTypeRequest)is_reportingmanger rotating_work_type_assign_exportshift_request_exportwork_type_request_export)
ActiontypeEmployee)notify   )check_approval_status$manager_or_owner_permission_requiredmanager_permission_requiredpermission_required)groupby_querysetpermission_based_queryset)CompanySerializerDepartmentSerializerEmployeeShiftScheduleSerializerEmployeeShiftSerializerJobPositionSerializerJobRoleSerializerRotatingShiftAssignSerializerRotatingShiftSerializer RotatingWorkTypeAssignSerializerRotatingWorkTypeSerializerShiftRequestSerializerWorkTypeRequestSerializerWorkTypeSerializerc                 j    	 | j                   j                  |      }|S # | j                  $ r Y y w xY w)Nid)objectsgetDoesNotExist)clspkobjs      4/var/www/horilla/horilla_api/api_views/base/views.pyobject_checkr@   ?   s8    kkooo$
 s     22c                     	 | j                   j                  |      j                          y# t        $ r}dt	        |      idfcY d }~S d }~ww xY w)Nr7   )    error  )r9   r:   delete	Exceptionstr)r<   r=   es      r?   object_deleterJ   G   sI    &2%%' &Q #%%&s   *- 	AA
A
Ac                 ^   | j                   j                  d      }t        j                  j	                  |      j                         }| j                  j                  |k(  ry|j                  j                  | j                  j                  k(  ry| j                  j                  d      ryy)Nemployee_idr7   T base.view_rotatingworktypeassignF)GETr:   r    r9   filterfirstuseremployee_getemployee_work_inforeporting_manager_idhas_perm)requestrL   employees      r?   individual_permssion_checkrX   O   s    ++//-0K&&+&6<<>H||  H,		$	$	9	9W\\=V=V	V			A	B    c                     | j                   j                  }	 |j                  j                  }||k(  S # t        $ r t        d      cY S w xY w)z
    If the instance have employee id field then you can use this method to know the request
    user employee is the reporting manager of the instance
    z,This Employee Dont Have any work information)rQ   rR   rS   rT   rG   r   )rV   instancemanageremployee_work_info_managers       r?   _is_reportingmangerr^   [   sX    
 ll''GL%-%@%@%U%U" 000  LJKKLs   3 A
	A
c                       e Zd ZeZegZ e ed            d
d       Z	 e ed            d        Z
 e ed            d        Z e ed            d	        Zy)JobPositionViewzbase.view_jobpositionNc                 h   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }t               }|j                  ||      }| j                  |d      }|j                  |j                        S )NrD   Job position not found   statusrC   Tmany)
r@   r   r   serializer_classdatar9   allr   paginate_querysetget_paginated_response)selfrV   r=   job_position
serializerjob_positions	paginaterpages           r?   r:   zJobPositionView.getl   s    'R8L#*C DSQQ..|<JJOOC88#++//1(*	**='B**4d*;
//
@@rY   zbase.change_jobpositionc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   rb   rc   rd   ri   rC   rE   )r@   r   r   rh   ri   is_validsaveerrors)rm   rV   r=   rn   ro   s        r?   putzJobPositionView.put{   sz    #K4W&?@MM**<gll*K
 OOJOOC88
))#66rY   zbase.add_jobpositionc                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S Nrt      rd   rE   rh   ri   ru   rv   r   rw   rm   rV   ro   s      r?   postzJobPositionView.post   S    ***=
 OOJOOC88
))#66rY   zbase.delete_jobpositionc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   rb   rc   rd   )r@   r   r   rJ   )rm   rV   r=   rn   responsestatus_codes         r?   rF   zJobPositionView.delete   sE    #K4W&?@MM -k2 >+55rY   N)__name__
__module____qualname__r-   rh   r   permission_classesr   r&   r:   rx   r~   rF    rY   r?   r`   r`   h   s    ,)*)*ABCA DA )*CDE7 F7 )*@AB7 C7 )*CDE6 F6rY   r`   c                       e Zd ZeZegZ e ed      d      dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)DepartmentViewzbase.view_departmentdispatchnameNc                 h   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }t               }|j                  ||      }| j                  |d      }|j                  |j                        S )NrD   Department not found rc   rd   rC   Trf   )
r@   r   r   rh   ri   r9   rj   r   rk   rl   )rm   rV   r=   
departmentro   departments	paginatorrr   s           r?   r:   zDepartmentView.get   s    %j"5J!*A B3OO..z:JJOOC88 ((,,.(*	**;@**4d*;
//
@@rY   zbase.change_departmentc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zDepartmentView.put   sz    !*b1
W&=>sKK**:GLL*I
 OOJOOC88
))#66rY   zbase.add_departmentc                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zDepartmentView.post   r   rY   zbase.delete_departmentc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rc   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   zDepartmentView.delete   sE    !*b1
W&=>sKK -j" =+55rY   r   )r   r   r   r*   rh   r   r   r   r&   r:   rx   r~   rF   r   rY   r?   r   r      s    +)*)*@A
SA TA )*BC*U7 V7 )*?@zR7 S7 )*BC*U6 V6rY   r   c                       e Zd ZeZegZ e ed      d      dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)JobRoleViewzbase.view_jobroler   r   Nc                 h   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }t               }|j                  ||      }| j                  |d      }|j                  |j                        S )NrD   Job role not found rc   rd   rC   Trf   )
r@   r   r   rh   ri   r9   rj   r   rk   rl   )rm   rV   r=   job_rolero   	job_rolesr   rr   s           r?   r:   zJobRoleView.get   s    #GR0H*? @MM..x8JJOOC88OO'')	(*	**9g>**4d*;
//
@@rY   zbase.change_jobrolec                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zJobRoleView.put   sz    ,W&;<SII**8',,*G
 OOJOOC88
))#66rY   zbase.add_jobrolec                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zJobRoleView.post   r   rY   zbase.delete_jobrolec                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rc   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   zJobRoleView.delete   sE    ,W&;<SII -gr :+55rY   r   )r   r   r   r.   rh   r   r   r   r&   r:   rx   r~   rF   r   rY   r?   r   r          ()*)*=>ZPA QA )*?@zR7 S7 )*<=JO7 P7 )*?@zR6 S6rY   r   c                       e Zd ZeZegZ e ed      d      dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)CompanyViewzbase.view_companyr   r   Nc                 h   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }t               }|j                  ||      }| j                  |d      }|j                  |j                        S )NrD   Company not found rc   rd   rC   Trf   )
r@   r   r   rh   ri   r9   rj   r   rk   rl   )rm   rV   r=   companyro   	companiesr   rr   s           r?   r:   zCompanyView.get   s    "7B/G*> ?LL..w7JJOOC88OO'')	(*	**9g>**4d*;
//
@@rY   zbase.change_companyc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zCompanyView.put  sy    w+?W&:;CHH**7*F
 OOJOOC88
))#66rY   zbase.add_companyc                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zCompanyView.post  r   rY   zbase.delete_companyc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rE   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   zCompanyView.delete  sD    w+?W&:;CHH -gr :+55rY   r   )r   r   r   r)   rh   r   r   r   r&   r:   rx   r~   rF   r   rY   r?   r   r      r   rY   r   c                       e Zd ZeZegZddZ e e	d      d      d        Z
 e e	d      d      d        Z e e	d	      d      d
        Zy)WorkTypeViewNc                 $   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |d      }t        |j                        S )NrD   WorkType not foundrc   rd   rC   Trf   )r@   r   r   rh   ri   r9   rj   )rm   rV   r=   	work_typero   
work_typess         r?   r:   zWorkTypeView.get(  s    $Xr2I *> ?LL..y9JJOOC88%%))+
**:D*A

((rY   zbase.add_worktyper   r   c                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S )Nrt   rC   rd   rE   r|   r}   s      r?   r~   zWorkTypeView.post4  r   rY   zbase.change_worktypec                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zWorkTypeView.put<  sz     2.	W&:;CHH**97<<*H
 OOJOOC88
))#66rY   zbase.delete_worktypec                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rc   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   zWorkTypeView.deleteG  sE     2.	W&:;CHH -h ;+55rY   r   )r   r   r   r5   rh   r   r   r:   r   r&   r~   rx   rF   r   rY   r?   r   r   $  s    ))*
) )*=>ZP7 Q7 )*@A
S7 T7 )*@A
S6 T6rY   r   c                       e Zd ZeZeZegZd Z	d	dZ
d Z eed       eed      d               Z eed       eed      d               Zy)
WorkTypeRequestViewc                 |    t         j                  j                         }|j                  }d}t	        |||d      }|S )Nbase.view_worktyperequestTuser_obj)r   r9   rj   rQ   r(   rm   rV   querysetrQ   perms        r?   get_querysetz WorkTypeRequestView.get_querysetU  s9    "**..0||*,T4DQrY   Nc                    |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S | j                  |      }| j                  |j                  |      j                  }|j                  j                  dd       }|r|j                         }t        ||||      S t               }	|	j                  ||      }
| j                  |
d	      }|	j                  |j                        S )
NrD   WorkTypeRequest not foundrc   rd   rC   r   groupby_fieldTrf   )r@   r   r   rh   ri   r   filterset_classrN   qsr:   build_absolute_urir'   r   rk   rl   )rm   rV   r=   work_type_requestro   work_type_requests!work_type_request_filter_queryset
field_nameurlrq   rr   s              r?   r:   zWorkTypeRequestView.get]  s    ,_b A (*E FsSS../@AJJOOC88!..w7,0,@,@KK"4 -A -

" 	* [[___d;
,,.C#j*K  )*	**+LgV**4d*;
//
@@rY   c                    | j                  |j                        }|j                         r|j                         }	 t	        j
                  |j                  |j                  j                  j                  j                  d|j                   d|j                   d|j                   d|j                   d|j                   dd|j                   d	|j                   

       t        |j                  d      S t        |j                  d      S # t        $ r!}t        |j                  d      cY d }~S d }~ww xY w)Nrt   zOYou have new work type request to                                 validate for u]   لديك طلب نوع وظيفة جديد للتحقق من                                 u[   Sie haben eine neue Arbeitstypanfrage zur                                 Validierung für z_Tiene una nueva solicitud de tipo de trabajo para                                 validar para ua   Vous avez une nouvelle demande de type de travail                                à valider pour information$/employee/work-type-request-view?id=z/api/base/worktype-requests/		recipientverbverb_arverb_deverb_esverb_friconredirectapi_redirectr{   rd   rE   )rh   ri   ru   rv   r!   sendrL   rS   rT   employee_user_idr8   r   rG   rw   )rm   rV   ro   r[   Es        r?   r~   zWorkTypeRequestView.postx  sD   ***=
 !(H?(( ,,??TTee..6.B.B-CE!!)!5!5 6822:2F2F1GI..6.B.B-CE1191E1E0FH&CHKK=Q#?}!M#&  
<< 
))#66  ?
 1 1#>>?s   CD 	E!D=7E=Ezbase.change_worktyperequestc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zWorkTypeRequestView.put  s~    
 )"=$W&AB3OO**+<7<<*P
 OOJOOC88
))#66rY   zbase.delete_worktyperequestc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rc   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   zWorkTypeRequestView.delete  sH    
 )"=$W&AB3OO -or B+55rY   r   )r   r   r   r4   rh   r   r   r   r   r   r:   r~   r#   r   r$   rx   rF   r   rY   r?   r   r   P  s    0+O)*A67: ?,IJ)67 K7 ?,IJ)66 K6rY   r   c                       e Zd Zd Zy)WorkTypeRequestCancelViewc                 |   t        j                  |      }t        ||      sM|j                  j	                  d      s2|j
                  |j                  j                  k(  r|j                  dk(  rd|_        d|_        |j                  |j
                  j                  _        |j
                  j                  j                          |j                          	 t        j                  |j                  j                  |j
                  j                  dddddd	|j                    d
d
       t#        d      S #  Y xY w)Nzbase.cancel_worktyperequestFTz)Your work type request has been rejected.u*   تم إلغاء طلب نوع وظيفتكz&Ihre Arbeitstypanfrage wurde storniertz1Su solicitud de tipo de trabajo ha sido canceladau1   Votre demande de type de travail a été annuléer   close%/api/base/worktype-requests/<int:pk>/	r   r   r   r   r   r   r   r   r   rC   rd   )r   findr   rQ   rU   rL   rR   approvedcanceledprevious_work_type_idrS   work_type_idrv   r!   r   r   r8   r   )rm   rV   r=   r   s       r?   rx   zWorkTypeRequestCancelView.put  s   +004w(9:||$$%BC ,,0I0II!**e3)-&).&!77 ))<<I ))<<AAC""$LL--/;;LLDHDOOCDUDXDXCYZ !H s##s   AD7 7D;N)r   r   r   rx   r   rY   r?   r   r     s    $rY   r   c                       e Zd ZegZd Zy)WorkRequestApproveViewc                 f   t        j                  |      }t        ||      sB|j                  j	                  d      s'|j                  j	                  d      r|j
                  s	 |j                         sd|_        d|_        |j                          	 t        j                  |j                  j                  |j                  j                  ddddd	d
|j                   dd
       t        ddi      S y t        ddid      S # t         $ r"}t        dt#        |      id      cY d }~S d }~ww xY w)Napprove_worktyperequestchange_worktyperequestTFz)Your work type request has been approved.u:   تمت الموافقة على طلب نوع وظيفتك.z'Ihre Arbeitstypanfrage wurde genehmigt.z1Su solicitud de tipo de trabajo ha sido aprobada.u4   Votre demande de type de travail a été approuvée.r   	checkmarkr   r   re   r   rD   rE   rd   zYou don't have permission)r   r   r   rQ   rU   r   is_any_work_type_request_existsr   rv   r!   r   rR   rL   r   r8   r   rG   rH   )rm   rV   r=   r   rI   s        r?   rx   zWorkRequestApproveView.put  s*   +004w(9:||$$%>?||$$%=>%.. %DDF-1!*-2!*!&&(CKK11"3"?"?"P"PH \ I S V#GHYH\H\G]!^(%L $Xz$:;;# G* W&AB3OO ! C#Wc!f$5cBBCs   A D 	D0D+%D0+D0Nr   r   r   r   r   rx   r   rY   r?   r   r     s    )* PrY   r   c                   .    e Zd ZegZ ed      d        Zy)WorkTypeRequestExportr   c                     t        |      S r   )r   rm   rV   s     r?   r:   zWorkTypeRequestExport.get  s    '00rY   N)r   r   r   r   r   r%   r:   r   rY   r?   r   r     s#    )* !<=1 >1rY   r   c                       e Zd ZeZegZddZy)IndividualRotatingWorktypesViewNc                    t        |      dk(  rt        ddid      S |rIt        t        |      }|t        ddid      S | j	                  |      }t        |j
                  d      S |j                  j                  d	d       }t        j                  j                  |
      }t               }|j                  ||      }| j	                  |d      }|j                  |j
                        S )NFrD   you have no permssion to viewrE   rd    RotatingWorkTypeAssign not foundrc   rC   rL   rL   Trf   )rX   r   r@   r   rh   ri   rN   r:   r9   rO   r   rk   rl   )	rm   rV   r=   rotating_work_type_assignro   rL   rotating_work_type_assigns
pagenationrr   s	            r?   r:   z#IndividualRotatingWorktypesView.get  s    %g.%7W&EFsSS(45KR(P%(0@A#  ../HIJJOOC88kkoomT:%;%C%C%J%J# &K &
" *+
++,FP**4d*;
00AArY   r   )r   r   r   r1   rh   r   r   r:   r   rY   r?   r   r      s    7)*BrY   r   c                       e Zd ZeZeZegZddZ	 e
d      dd       Z e
d      d        Z e
d      d        Z e
d	      d
        Zy)RotatingWorkTypeAssignViewNc                     |ra|j                   j                  }|j                  j                         }||j                  k(  s ||k(  s|j                   j	                  d      ryyy )NrM   TF)rQ   rR   rL   get_reporting_managerrU   )rm   rV   r>   r=   rW   r\   s         r?   _permission_checkz,RotatingWorkTypeAssignView._permission_check  sX    ||00Hoo;;=GCOO+h&<<(()KL rY   rM   c                 .   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |j                  |      j                  }|j                  j                  dd       }|r|j                         }t        ||||      S t               }	|	j                  ||      }
| j                  |
d	      }|	j                  |j                        S )
NrD   r   rc   rd   rC   r   r   Trf   )r@   r   r   rh   ri   r9   rj   r   rN   r   r:   r   r'   r   rk   rl   )rm   rV   r=   r   ro   r   *rotating_work_type_assigns_filter_querysetr   r   r   rr   s              r?   r:   zRotatingWorkTypeAssignView.get*  s    (45KR(P%(0@A#  ../HIJJOOC88%;%C%C%G%G%I"595I5IKK"< 6J 6

" 	3 [[___d;
,,.C#j*T  *+
++6
 **4d*;
00AArY   base.add_rotatingworktypeassignc                    | j                  |j                        }|j                         rt|j                         }	 |D cg c]  }|j                   }}t        j                  |j                  j                  |dddddddd	

       t        |j                  d      S t        |j                  d      S c c}w #  Y 7xY w)Nrt   z#You are added to rotating work typeu=   تمت إضافتك إلى نوع العمل المتناوبu2   Sie werden zum rotierenden Arbeitstyp hinzugefügtz(Se le agrega al tipo de trabajo rotativou-   Vous êtes ajouté au type de travail rotatifinfinitez/employee/employee-profile/rB   r   r{   rd   rE   )rh   ri   ru   rv   r   r!   r   rQ   rR   r   rw   )rm   rV   ro   r>   rW   userss         r?   r~   zRotatingWorkTypeAssignView.postI  s    ***=
 //#CCFGx22GGLL--#>[PFK#:!# JOOC88
))#66! Hs   B= B85B= 8B= =Cz"base.change_rotatingworktypeassignc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r   rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r   ro   s        r?   rx   zRotatingWorkTypeAssignView.puta  s~    $01G$L!$,W&HIRUVV**+D7<<*X
 OOJOOC88
))#66rY   z"base.delete_rotatingworktypeassignc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r   rc   rd   )r@   r   r   rJ   )rm   rV   r=   r   r   r   s         r?   rF   z!RotatingWorkTypeAssignView.deletel  sI    $01G$L!$,W&HIRUVV -.Db I+55rY   )NNr   )r   r   r   r1   rh   r   r   r   r   r   r%   r:   r~   rx   rF   r   rY   r?   r   r     s    72O)*
 !!CDB EB< !!BC7 D7. !!EF7 G7 !!EF6 G6rY   r   c                       e Zd ZeZegZddZy)IndividualWorkTypeRequestViewNc                    t        |      dk(  rt        ddid      S |rIt        t        |      }|t        ddid      S | j	                  |      }t        |j
                  d      S |j                  j                  d	d       }t        j                  j                  |
      }t               }|j                  ||      }| j	                  |d      }|j                  |j
                        S )NFrD   r   rE   rd   r   rc   rC   rL   r   Trf   )rX   r   r@   r   rh   ri   rN   r:   r9   rO   r   rk   rl   )rm   rV   r=   r   ro   rL   rq   rr   s           r?   r:   z!IndividualWorkTypeRequestView.gety  s    %g.%7W&EFsSS  ,_b A (*E FsSS../@AJJOOC88kkoomT:+33::{:S(*	**+<gF**4d*;
//
@@rY   r   )r   r   r   r4   rh   r   r   r:   r   rY   r?   r  r  u  s    0)*ArY   r  c                       e Zd ZeZegZddZ e e	d      d      d        Z
 e e	d      d      d        Z e e	d	      d      d
        Zy)EmployeeShiftViewNc                 (   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |d      }t        |j                  d      S )NrD   EmployeeShift not foundrc   rd   rC   Trf   )r@   r   r   rh   ri   r9   rj   )rm   rV   r=   employee_shiftro   employee_shiftss         r?   r:   zEmployeeShiftView.get  s    )-<N%*C DSQQ..~>JJOOC88'//335**?*F

44rY   zbase.add_employeeshiftr   r   c                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zEmployeeShiftView.post  r   rY   zbase.change_employeeshiftc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r  ro   s        r?   rx   zEmployeeShiftView.put  z    %mR8!W&?@MM**>*M
 OOJOOC88
))#66rY   zbase.delete_employeeshiftc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r  rc   rd   )r@   r   r   rJ   )rm   rV   r=   r  r   r   s         r?   rF   zEmployeeShiftView.delete  E    %mR8!W&?@MM -mR @+55rY   r   )r   r   r   r,   rh   r   r   r:   r   r&   r~   rx   rF   r   rY   r?   r  r    s    .)*
5 )*BC*U7 V7 )*EFZX7 Y7 )*EFZX6 Y6rY   r  c                       e Zd ZeZegZ e ed      d      dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)EmployeeShiftScheduleViewzbase.view_employeeshiftscheduler   r   Nc                 (   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |d      }t        |j                  d      S )NrD   EmployeeShiftSchedule not foundrc   rd   rC   Trf   )r@   r   r   rh   ri   r9   rj   )rm   rV   r=   employee_shift_schedulero   employee_shift_scheduless         r?   r:   zEmployeeShiftScheduleView.get  s     &23H"&M#&.?@  ../FGJJOOC88#8#@#@#D#D#F **+C$*O

44rY   zbase.add_employeeshiftschedulec                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zEmployeeShiftScheduleView.post  sU     ***=
 OOJOOC88
))#66rY   z!base.change_employeeshiftschedulec                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r  ro   s        r?   rx   zEmployeeShiftScheduleView.put  s     #//Db"I"*W&GHQTUU**+B*V
 OOJOOC88
))#66rY   z!base.delete_employeeshiftschedulec                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r  rc   rd   )r@   r   r   rJ   )rm   rV   r=   r  r   r   s         r?   rF   z EmployeeShiftScheduleView.delete  sK     #//Db"I"*W&GHQTUU -.CR H+55rY   r   )r   r   r   r+   rh   r   r   r   r&   r:   r~   rx   rF   r   rY   r?   r  r    s    6)*=>Z55 <=J77 ?@z77 ?@z66rY   r  c                       e Zd ZeZegZ e ed      d      dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)RotatingShiftViewzbase.view_rotatingshiftr   r   Nc                    |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S |j
                  j                  d      }|r!t        j                  j                  |g      }t        j                  j                         }| j                  |d	      }t        |j                  d      S )
NrD   RotatingShift not foundrc   rd   rC   rL   )employee_id__inTrf   )
r@   r   r   rh   ri   rN   r:   r9   rO   rj   )rm   rV   r=   rotating_shiftro   rL   rotating_shiftss          r?   r:   zRotatingShiftView.get  s     )-<N%*C DSQQ..~>JJOOC88kkoo
 +33::!, ; O (//335**?*F

44rY   zbase.add_rotatingshiftc                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zRotatingShiftView.post	  r   rY   zbase.change_rotatingshiftc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r!  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r#  ro   s        r?   rx   zRotatingShiftView.put  r  rY   zbase.delete_rotatingshiftc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r!  rc   rd   )r@   r   r   rJ   )rm   rV   r=   r#  r   r   s         r?   rF   zRotatingShiftView.delete  r  rY   r   )r   r   r   r0   rh   r   r   r   r&   r:   r~   rx   rF   r   rY   r?   r  r    s    .)*)*CD:V5 W5* )*BC*U7 V7 )*EFZX7 Y7 )*EFZX6 Y6rY   r  c                       e Zd ZeZegZddZy)IndividualRotatingShiftViewNc                    t        |      dk(  rt        ddid      S |rIt        t        |      }|t        ddid      S | j	                  |      }t        |j
                  d      S |j                  j                  d	d       }t        j                  j                  |
      }t               }|j                  ||      }| j	                  |d      }|j                  |j
                        S )NFrD   r   rE   rd   RotatingShiftAssign not foundrc   rC   rL   r   Trf   )rX   r   r@   r   rh   ri   rN   r:   r9   rO   r   rk   rl   )	rm   rV   r=   rotating_shift_assignro   rL   rotating_shift_assignsr   rr   s	            r?   r:   zIndividualRotatingShiftView.get)  s    %g.%7W&EFsSS$01Db$I!$,*I JSVWW../DEJJOOC88kkoomT:!4!<!<!C!C# "D "
 )*	**+A7K**4d*;
//
@@rY   r   )r   r   r   r/   rh   r   r   r:   r   rY   r?   r)  r)  %  s    4)*ArY   r)  c                       e Zd ZeZeZegZ e	d      d
d       Z
 e	d      d        Z e	d      d        Z e	d      d	        Zy)RotatingShiftAssignViewzbase.view_rotatingshiftassignNc                 .   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |j                  |      j                  }|j                  j                  dd       }|r|j                         }t        ||||      S t               }	|	j                  ||      }
| j                  |
d	      }|	j                  |j                        S )
NrD   r+  rc   rd   rC   r   r   Trf   )r@   r   r   rh   ri   r9   rj   r   rN   r   r:   r   r'   r   rk   rl   )rm   rV   r=   r,  ro   r-  &rotating_shift_assigns_filter_querysetr   r   r   rr   s              r?   r:   zRotatingShiftAssignView.getC  s   $01Db$I!$,*I JSVWW../DEJJOOC88!4!<!<!@!@!B151E1EKK"8 2F 2

" 	/ [[___d;
,,.C#j*P  )*	**2G
 **4d*;
//
@@rY   base.add_rotatingshiftassignc                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zRotatingShiftAssignView.post_  r   rY   zbase.change_rotatingshiftassignc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r+  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r,  ro   s        r?   rx   zRotatingShiftAssignView.putg  s}     ,-@" E (W&EFsSS**+@w||*T
 OOJOOC88
))#66rY   zbase.delete_rotatingshiftassignc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r+  rc   rd   )r@   r   r   rJ   )rm   rV   r=   r,  r   r   s         r?   rF   zRotatingShiftAssignView.deleter  sH     ,-@" E (W&EFsSS -.A2 F+55rY   r   )r   r   r   r/   rh   r
   r   r   r   r%   r:   r~   rx   rF   r   rY   r?   r/  r/  >  s    40O)* !@AA BA6 !!?@7 A7 !!BC7 D7 !!BC6 D6rY   r/  c                       e Zd ZeZegZddZy)IndividualShiftRequestViewNc                    t        |      dk(  rt        ddid      S |rIt        t        |      }|t        ddid      S | j	                  |      }t        |j
                  d      S |j                  j                  d	d       }t        j                  j                  |
      }t               }|j                  ||      }| j	                  |d      }|j                  |j
                        S )NFrD   r   rE   rd   r  rc   rC   rL   r   Trf   )rX   r   r@   r   rh   ri   rN   r:   r9   rO   r   rk   rl   )	rm   rV   r=   shift_requestro   rL   shift_requestsrq   rr   s	            r?   r:   zIndividualShiftRequestView.get  s    %g.%7W&EFsSS(r:M$*C DSQQ..}=JJOOC88kkoomT:%--444M(*	**>7C**4d*;
//
@@rY   r   )r   r   r   r3   rh   r   r   r:   r   rY   r?   r7  r7  {  s    -)*ArY   r7  c                       e Zd ZeZegZeZe	gZ
d Zd	dZd Z eed       eed      d               Z eed       eed      d               Zy)
ShiftRequestViewc                 |    t         j                  j                         }|j                  }d}t	        |||d      }|S )Nzbase.view_shiftrequestTr   )r   r9   rj   rQ   r(   r   s        r?   r   zShiftRequestView.get_queryset  s9    ''++-||',T4DQrY   Nc                    |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S | j                  |      }| j                  |j                  |      j                  }|j                  j                  dd       }|r|j                         }t        ||||      S t               }	|	j                  ||      }
| j                  |
d	      }|	j                  |j                        S )
NrD   ShiftRequest not foundrc   rd   rC   r   r   Trf   )r@   r   r   rh   ri   r   r   rN   r   r:   r   r'   r   rk   rl   )rm   rV   r=   r9  ro   r:  shift_requests_filter_querysetr   r   r   rr   s              r?   r:   zShiftRequestView.get  s   (r:M$*B CCPP..}=JJOOC88**73)-)=)=KK. *> *

" 	' [[___d;
,,.C#j*H  )*	**+I7S**4d*;
//
@@rY   c                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zShiftRequestView.post  sS    ***=
 OOJOOC88
))#66rY   zbase.change_shiftrequestc                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   r?  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   r9  ro   s        r?   rx   zShiftRequestView.put  s|     %\26 W&>?LL**=w||*L
 OOJOOC88
))#66rY   zbase.delete_shiftrequestc                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   r?  rc   rd   )r@   r   r   rJ   )rm   rV   r=   r9  r   r   s         r?   rF   zShiftRequestView.delete  sG     %\26 W&>?LL -lB ?+55rY   r   )r   r   r   r3   rh   r   filter_backendsr   r   r   r   r   r:   r~   r#   r   r$   rx   rF   r   rY   r?   r<  r<    s    -*+O(O)*A47 <)CD),8RS7 T E7 <)CD),8RS6 T E6rY   r<  c                       e Zd ZeZegZ e ed            dd       Z	 e ed      d      d        Z
 e ed      d      d	        Z e ed
      d      d        Zy)RotatingWorkTypeViewzbase.view_rotatingworktypeNc                 (   |rIt        t        |      }|t        ddid      S | j                  |      }t        |j                  d      S t        j
                  j                         }| j                  |d      }t        |j                  d      S )NrD   RotatingWorkType not foundrc   rd   rC   Trf   )r@   r   r   rh   ri   r9   rj   )rm   rV   r=   rotating_work_typero   rotating_work_typess         r?   r:   zRotatingWorkTypeView.get  s    !-.>!C!)*F GPSTT../ABJJOOC88.66::<**+>T*J

44rY   zbase.add_rotatingworktyper   r   c                     | j                  |j                        }|j                         r'|j                          t	        |j                  d      S t	        |j
                  d      S rz   r|   r}   s      r?   r~   zRotatingWorkTypeView.post  r   rY   zbase.change_rotatingworktypec                    t        t        |      }|t        ddid      S | j                  ||j                        }|j                         r'|j                          t        |j                  d      S t        |j                  d      S )NrD   rH  rc   rd   rt   rC   rE   )r@   r   r   rh   ri   ru   rv   rw   )rm   rV   r=   rI  ro   s        r?   rx   zRotatingWorkTypeView.put  s     **:B?%W&BCCPP**+=GLL*Q
 OOJOOC88
))#66rY   zbase.delete_rotatingworktypec                     t        t        |      }|t        ddid      S t        t        |      \  }}t        ||      S )NrD   rH  rc   rd   )r@   r   r   rJ   )rm   rV   r=   rI  r   r   s         r?   rF   zRotatingWorkTypeView.delete  sJ     **:B?%W&BCCPP -.> C+55rY   r   )r   r   r   r2   rh   r   r   r   r&   r:   r~   rx   rF   r   rY   r?   rF  rF    s    1)*)*FGH
5 I
5 )*EFZX7 Y7 :;*77 :;*66rY   rF  c                       e Zd ZegZd Zy)ShiftRequestApproveViewc                    t         j                  j                  |      }t        ||      sB|j                  j                  d      s'|j                  j                  d      rY|j                  sM	 |j                         s-d|_        d|_        |j                          t        ddid	      S t        d
did	      S t        d
did	      S )Nr7   approve_shiftrequestchange_shiftrequestTFre   successrC   rd   rD   z"Already request exits on same daterE   zNo permission )r   r9   r:   r   rQ   rU   r   is_any_request_existsr   rv   r   rm   rV   r=   r9  s       r?   rx   zShiftRequestApproveView.put
  s    $,,00B07w6||$$%;<||$$%:;!** !668)-&).&""$9 5cBBBCC  "23C@@rY   Nr   r   rY   r?   rO  rO    s    )*ArY   rO  c                       e Zd ZegZd Zy)ShiftRequestBulkApproveViewc                 $   |j                   d   }t        |      }d}|D ]  }t        j                  j	                  |      }t        ||      sD|j                  j                  d      s)|j                  j                  d      sf|j                  rs	 d|_        d|_	        |j                  j                  }|j                  |_        |j                          |j                          |dz  } ||k(  rt        d	d
id      S t        d	did      S )Nidsr   r7   rQ  rR  TF   re   rS  rC   rd   failedrE   )ri   lenr   r9   r:   r   rQ   rU   r   r   rL   rS   shift_idrv   r   )rm   rV   rY  lengthcountr8   r9  rS   s           r?   r~   z ShiftRequestBulkApproveView.post%  s   ll5!S 	B(00444;M"7M:<<(()?@<<(()>?%.. *.&).&%2%>%>%Q%Q".;.D.D"+"'')""$
#	$ U?Xy1#>>8,S99rY   Nr   r   r   r   r   r~   r   rY   r?   rW  rW  "  s    )*:rY   rW  c                       e Zd ZegZd Zy)ShiftRequestCancelViewc                    t         j                  j                  |      }t        ||      sM|j                  j                  d      s2|j                  |j                  j                  k(  r|j                  dk(  rvd|_	        d|_        |j                  |j                  j                  _        |j                  j                  j                          |j                          t        ddid      S t        dd	id
      S )Nr7   base.cancel_shiftrequestFTre   rS  rC   rd   r[  rE   )r   r9   r:   r   rQ   rU   rL   rR   r   r   previous_shift_idrS   r]  rv   r   rU  s       r?   r~   zShiftRequestCancelView.postC  s    $,,00B07w6||$$%?@((GLL,E,EE&&%/%)M"%*M"// %%88A %%88==? Xy1#>>8,S99rY   Nr`  r   rY   r?   rb  rb  @  s    )*:rY   rb  c                       e Zd ZegZd Zy)ShiftRequestBulkCancelViewc                 v   |j                   j                  dd       }t        |      }d}|D ]  }t        j                  j                  |      }t        ||      sO|j                  j                  d      s4|j                  |j                  j                  k(  sn|j                  dk(  s~d|_        d|_
        |j                  |j                  j                  _        |j                  j                  j                          |j                          |dz  } ||k(  rt!        dd	id
      S t!        ddid      S )NrY  r   r7   rd  FTrZ  re   rS  rC   rd   r[  rE   )ri   r:   r\  r   r9   r   rQ   rU   rL   rR   r   r   re  rS   r]  rv   r   )rm   rV   rY  r^  r_  r8   r9  s          r?   r~   zShiftRequestBulkCancelView.postZ  s   llud+S 	B(00444;M"7M:<<(()CD ,,0I0II!**e3)-&).&!33 ))<<E ))<<AAC""$
	  U?Xy1#>>8,S99rY   Nr`  r   rY   r?   rg  rg  W  s    )*:rY   rg  c                       e Zd ZegZddZy)ShiftRequestDeleteViewNc                    |O	 |j                   d   }t        j                  j                  |      }|j	                          t        ddid	      S 	 t        j                  j                  |
      }|j                  s |j	                          t        ddid	      S # t
        $ r#}t        dt        |      dd      cY d }~S d }~ww xY w# t        j                  $ r t        dddd      cY S w xY w)NrY  id__inr[  )re   rD   rE   rd   re   rS  rC   r7   zShift request does not existsdeleted)ri   r   r9   rO   rF   rG   r   rH   r:   r   r;   )rm   rV   r=   rY  r:  rI   r9  s          r?   rF   zShiftRequestDeleteView.deletev  s    :Sll5)!-!5!5!<!<C!<!H%%' Xy1#>>
	(00444;M ))  " 9-c::  S8c!f EcRRS (( 	#.MN 	s/   ?B =C 	C(C CC#C43C4r   r   r   r   r   r   rF   r   rY   r?   rj  rj  s  s    )*;rY   rj  c                       e Zd ZegZd Zy)ShiftRequestExportViewc                     t        |      S r   )r   r   s     r?   r:   zShiftRequestExportView.get  s    #G,,rY   Nr   r   r   r   r   r:   r   rY   r?   rq  rq    s    )*-rY   rq  c                       e Zd ZegZd Zy)ShiftRequestAllocationViewc                     t         j                  j                  |      }|j                         s-d|_        d|_        |j                          t        ddid      S t        ddid	      S )
Nr7   TFre   rS  rC   rd   r[  rE   )r   r9   r:   rT  reallocate_approvedreallocate_canceledrv   r   )rm   rV   r8   r9  s       r?   r~   zShiftRequestAllocationView.post  sg    $,,00B0722404M-05M- Xy1#>>8,S99rY   Nr`  r   rY   r?   ru  ru    s    )*:rY   ru  c                       e Zd ZegZd Zy)RotatingShiftAssignExportc                     t        |      S r   )r   r   s     r?   r:   zRotatingShiftAssignExport.get  s    /88rY   Nrs  r   rY   r?   rz  rz    s    )*9rY   rz  c                       e Zd ZegZd Zy)RotatingShiftAssignBulkArchivec                    |j                   j                  dd       }	 t        j                  j	                  |      }|j                  |       t        ddid      S # t        $ r"}t        dt        |      id	      cY d }~S d }~ww xY w)
NrY  rl  )	is_activere   rS  rC   rd   rD   rE   )	ri   r:   r   r9   rO   updater   rG   rH   )rm   rV   re   rY  rotating_shift_asssignr   s         r?   rx   z"RotatingShiftAssignBulkArchive.put  s    llud+	;%8%@%@%G%Gs%G%S""))F);Xy1#>> 	;Wc!f-c::	;s   A A 	B
(B?B
B
Nr   r   rY   r?   r}  r}        )*;rY   r}  c                       e Zd ZegZd Zy)RotatingShiftAssignBulkDeletec                    |j                   j                  dd       }	 t        j                  j	                  |      }|j                          t        ddid      S # t        $ r"}t        dt        |      id      cY d }~S d }~ww xY w)	NrY  rl  re   rS  rC   rd   rD   rE   )	ri   r:   r   r9   rO   rF   r   rG   rH   )rm   rV   rY  r  r   s        r?   rF   z$RotatingShiftAssignBulkDelete.delete  s{    llud+	;%8%@%@%G%Gs%G%S""))+Xy1#>> 	;Wc!f-c::	;s   >A 	B&B=BBNro  r   rY   r?   r  r    r  rY   r  c                       e Zd ZegZd Zy)RotatingWorKTypePermissionCheckc                    t         j                  j                  |      j                         j	                         }|j
                  j                  d      s|j
                  j                  |k(  rt        d      S t        d      S )Nr7   r  rC   rd   rE   	r    r9   rO   rP   r   rQ   rU   rR   r   rm   rV   r8   r\   s       r?   r:   z#RotatingWorKTypePermissionCheck.get  sh    ""))R)0668NNPLL!!"CD||((G33''s##rY   Nrs  r   rY   r?   r  r        )*$rY   r  c                       e Zd ZegZd Zy)RotatingShiftPermissionCheckc                    t         j                  j                  |      j                         j	                         }|j
                  j                  d      s|j
                  j                  |k(  rt        d      S t        d      S )Nr7   r2  rC   rd   rE   r  r  s       r?   r:   z RotatingShiftPermissionCheck.get  sh    ""))R)0668NNPLL!!"@A||((G33''s##rY   Nrs  r   rY   r?   r  r    r  rY   r  c                       e Zd ZegZd Zy)%WorktypeRequestApprovePermissionCheckc                 D   t         j                  j                  |j                  j	                  d            j                         }t        ||      s6|j                  j                  d      s|j                  j                  d      rt        d      S t        d      S NrL   r7   rQ  rR  rC   rd   rE   
r    r9   rO   rN   r:   rP   r^   rQ   rU   r   rm   rV   r[   s      r?   r:   z)WorktypeRequestApprovePermissionCheck.get  w    ##**gkkoom.L*MSSU2||$$%;<||$$%:;3''s##rY   Nrs  r   rY   r?   r  r        )*$rY   r  c                       e Zd ZegZd Zy)"ShiftRequestApprovePermissionCheckc                 D   t         j                  j                  |j                  j	                  d            j                         }t        ||      s6|j                  j                  d      s|j                  j                  d      rt        d      S t        d      S r  r  r  s      r?   r:   z&ShiftRequestApprovePermissionCheck.get  r  rY   Nrs  r   rY   r?   r  r    r  rY   r  c                       e Zd ZegZd Zy)EmployeeTabPermissionCheckc                    t         j                  j                  |j                  j	                  d            j                         }t        ||      s|j                  j                  g d      rt        d      S t        ddid      S )	NrL   r7   )zview.view_worktyperequestzattendance.view_shiftrequestzemployee.change_employeerC   rd   messageNo permissionrE   )
r    r9   rO   rN   r:   rP   r^   rQ   	has_permsr   r  s      r?   r:   zEmployeeTabPermissionCheck.get  sp    ##**gkkoom.L*MSSUw1W\\5K5K6
 3''O4SAArY   Nrs  r   rY   r?   r  r    s    )*BrY   r  c                       e Zd Zd Zy)CheckUserLevelc                     |j                   j                  d      }|j                  j                  |      rt	        d      S t	        ddid      S )Nr   rC   rd   rD   r  rE   )rN   r:   rQ   rU   r   )rm   rV   r   s      r?   r:   zCheckUserLevel.get  sC    {{v&<<  &3''/23??rY   N)r   r   r   r:   r   rY   r?   r  r  
  s    @rY   r  N)idjango.httpr   django.utils.decoratorsr   django_filters.rest_frameworkr   rest_framework.paginationr   rest_framework.permissionsr   rest_framework.responser   rest_framework.viewsr	   base.filtersr
   r   r   r   base.modelsr   r   r   r   r   r   r   r   r   r   r   r   r   
base.viewsr   r   r   r   employee.modelsr   r    notifications.signalsr!   api_decorators.base.decoratorsr#   r$   r%   r&   api_methods.base.methodsr'   r(    api_serializers.base.serializersr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r@   rJ   rX   r^   r`   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r)  r/  r7  r<  rF  rO  rW  rb  rg  rj  rq  ru  rz  r}  r  r  r  r  r  r  r  r   rY   r?   <module>r     sW   $ 4 = : 6 , (      1 (  T   "&	
1,6g ,6^,6W ,6^,6' ,6^,6' ,6^)67 )6X\6' \6~ $  $F#PW #PL1G 1Bg B2Y6 Y6xAG A.)6 )6X46 46n36 36lA' A2:6g :6zA A,B6w B6J.67 .6bAg A6:' :<:W :.: :8;W ;6-W -
: 
:9 9
;W 
;
;G 
;
$g 
$
$7 
$$G $$ $B B"@W @rY   