
    si\                     r   d 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 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 ddlmZmZmZ  eed       e ed      d       G d de                    Z eed       e ed      d       G d de                    Z  eed       e ed      d       G d de                    Z! eed       e ed      d       G d de                    Z" eed       e ed      d       G d de                    Z# eed       e ed      d       G d de                    Z$ejJ                  jM                   ed       d!f       ejN                  jM                  d"       ejP                  jM                  d#       y$)%z0
This page handles grace time in settings page.
    )Any)messages)HttpResponse)render)reverse)method_decorator)gettext_lazy)GraceTimeFilter)GraceTimeForm)	GraceTime)EmployeeShiftListView)login_requiredpermission_required)HorillaFormViewHorillaListViewHorillaNavViewdispatch)namez-attendance.view_attendancevalidationcondition)permc                        e Zd ZdZdeddf fdZeZeZ	 e
d      df e
d      d	f e
d
      df e
d      df e
d      dfgZddiZdZdZ xZS )GenericGraceTimeListViewz
    List view of the page
    kwargsreturnNc                 2    t        |   di | d| _        y )Nzall-container super__init__view_idselfr   	__class__s     =/var/www/python-projects/worksol/attendance/cbv/grace_time.pyr   z!GenericGraceTimeListView.__init__$   s    "6"&    zAllowed Timeallowed_time_colz	Is activeis_active_colzApplicable on clock-inapplicable_on_clock_in_colzApplicable on clock-outapplicable_on_clock_out_colzAssigned Shiftsget_shifts_displayzH
                   style = "width:200px !important"
                   zE
                id = "graceTimeTr{get_instance_id}"
                
action_col)__name__
__module____qualname____doc__r   r   r   modelr
   filter_class_columnsheader_attrs	row_attrsaction_method__classcell__r"   s   @r#   r   r      s    ' ' ' E"L 
>	./	
;)	
#	$&BC	
$	%'DE	
	34G 	 LI !Mr$   r   c                   :     e Zd ZdZdeddf fdZdZ fdZ xZS )DefaultGraceTimeListz$
    List of default grace time
    r   r   Nc                 2    t        |   di | d| _        y )Nzdefault-containerr   r   r    s     r#   r   zDefaultGraceTimeList.__init__J   s    "6"*r$   selectedInstancesDefaultc                 D    t         |          }|j                  d      S NT
is_default)r   get_querysetfilterr!   querysetr"   s     r#   r@   z!DefaultGraceTimeList.get_querysetP   s!    7')$//r$   	r+   r,   r-   r.   r   r   selected_instances_key_idr@   r6   r7   s   @r#   r9   r9   @   s-    + + + !;0 0r$   r9   c                   :     e Zd ZdZdeddf fdZdZ fdZ xZS )GraceTimeListz
    List of grace time
    r   r   Nc                 2    t        |   di | d| _        y )Nzgracetime-containerr   r   r    s     r#   r   zGraceTimeList.__init___   s    "6",r$   selectedInstancesDatac                 D    t         |          }|j                  d      S r=   )r   r@   excluderB   s     r#   r@   zGraceTimeList.get_querysete   s$    7')400r$   rD   r7   s   @r#   rG   rG   U   s-    - - - !81 1r$   rG   c                   N     e Zd ZdZdeddf fdZ ed      Z e       Z	dZ
 xZS )DefaultGraceTimeNav
    Nav bar
    r   r   Nc                     t        |   di | t        j                  j	                  d      j                         }|s;| j                  j                  j                  d      rdt        d       d| _
        y y y )NTr>   attendance.add_gracetimea&  
                                onclick = "event.stopPropagation();"
                                data-toggle="oh-modal-toggle"
                                data-target="#genericModal"
                                hx-target="#genericModalBody"
                                hx-get="grace-time-createz/?default=True"
                                r   )r   r   r   objectsrA   firstrequestuserhas_permr   create_attrs)r!   r   default_grace_timer"   s      r#   r   zDefaultGraceTimeNav.__init__t   s~    "6"&..555FLLN!dll&7&7&@&@&'
%)
 *11D)E(F G!!$D'
!r$   zDefault Grace Time#listContainerr+   r,   r-   r.   r   r   r1   	nav_titler
   filter_instancesearch_swap_targetr6   r7   s   @r#   rM   rM   j   s6    $ $ $ &'I%'O)r$   rM   c                   N     e Zd ZdZdeddf fdZ ed      Z e       Z	dZ
 xZS )GraceTimeNavrN   r   r   Nc                 L    t        |   di | dt        d       d| _        y )Na  
                            onclick = "event.stopPropagation();"
                            data-toggle="oh-modal-toggle"
                            data-target="#genericModal"
                            hx-target="#genericModalBody"
                            hx-get="rQ   z,?default=False"
                            r   )r   r   r   rW   r    s     r#   r   zGraceTimeNav.__init__   s6    "6"!%
 &--@%A$B C r$   
Grace TimerY   rZ   r7   s   @r#   r_   r_      s4    
  
  
  ,I%'O)r$   r_   rP   c                   N     e Zd ZdZeZeZ ed      Z	 fdZ
dedef fdZ xZS )GraceTimeFormViewz
    Create and edit form
    zCreate grace timec                    t        |   di |}t        | j                  j                  j                  d            }|| j                  j                  d   _        | j                  j                  j                  rd| j                  j                  j                  j                         | j                  j                  d   _        t        d      | j                  _        |S )Ndefaultr?   shiftszUpdate grace timer   )r   get_context_dataevalrT   GETgetformfieldsinitialinstancepkemployee_shiftallr1   
form_classverbose_name)r!   r   contextr?   r"   s       r#   rg   z"GraceTimeFormView.get_context_data   s    '*4V4$,,**..y9:
1;		&.99  151C1C1R1R1V1V1XDIIX&.+,-@+ADOO(r$   rk   r   c                 d   |j                         r|j                         }|j                  j                  rF|j                  j                          t        d      }t        j                  | j                  |       n+t        d      }t        j                  | j                  |       |j                  j                  d      }|D ]  }||_        |j                           | j                  j                  j                  d      }|dk(  rt        d      S t        d      S t        | A  |      S )Nz Grace time updated successfully.z Grace time created successfully.rf   re   Falsezj<script>$('#genericModal').removeClass('oh-modal--show');$('#gracetime-containerReload').click();</script>z<script>$('#genericModal').removeClass('oh-modal--show');$('#default-containerReload').click();$('.defaultGraceNav').click();</script>)is_validsavern   ro   rp   clearr1   r   successrT   cleaned_datarj   grace_time_idri   r   r   
form_valid)r!   rk   	gracetimemessagerf   shiftdefaultValuer"   s          r#   r}   zGraceTimeFormView.form_valid   s
   ==?		I}}((..0>?  w7 >?  w7&&**84F &/#

  <<++//	:Lw&# A    Y  w!$''r$   )r+   r,   r-   r.   r   r/   r   rr   r1   new_display_titlerg   r   r}   r6   r7   s   @r#   rc   rc      s=     EJ-.(} ( ( (r$   rc   ra   get_grace_time)ra   r|   r|   N))r.   typingr   django.contribr   django.httpr   django.shortcutsr   django.urlsr   django.utils.decoratorsr   django.utils.translationr	   r1   attendance.filtersr
   attendance.formsr   attendance.modelsr   base.cbv.employee_shiftr   horilla_views.cbv_methodsr   r   horilla_views.generic.cbv.viewsr   r   r   r   r9   rG   rM   r_   rc   r2   appendsortby_mappingbulk_update_fieldsr   r$   r#   <module>r      s    # $ #  4 6 . * ' 9 I  .z2LM	! !	 3
!B .z2LM	03 0	 3
0  .z2LM	1, 1	 3
1  .z2LM	*. *	 3
*2 .z2LM	*> *	 3
*, .z2%+EFZX*( *( Y 3*(Z    $ $ao7G%H I  $ $ + +,K L  ( ( / / @r$   