
    si                        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mZ ddl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(  ee$d       G d de             Z) ee$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       G d  d!e(             Z- ee$d       e e%d"      d       G d# d$e(                    Z.y%)&z7
This page handles the cbv methods for dashboard views
    )datetime)Any)messages)HttpResponse)reverse)method_decorator)gettext_lazy)ShiftRequestList)WorkRequestListView)manager_can_enter)AnnouncementFilterAnnouncementViewFilter)filtersubordinates)AnnouncementAnnouncementView)EmployeeWorkInformationFilter)!EmployeeWorkInformationUpdateForm)EmployeeWorkInformation)login_requiredpermission_required)HorillaFormViewHorillaListViewdispatch)namec                   |     e Zd ZdZdeddf fdZd Z ed      dd	f ed
      dfgZdZ	ddddZ
dZdZdZdZ xZS )DashboardWorkTypeRequestz-
    work type request view in dashboard
    kwargsreturnNc                 f    t        |   di | t        d      | _        d| j                  _        y )Nzdashboard-work-type-request	dashboard )super__init__r   
search_urlrequestr    selfr   	__class__s     @/var/www/python-projects/worksol/base/cbv/dashboard/dashboard.pyr#   z!DashboardWorkTypeRequest.__init__!   s,    "6"!"?@!,    c                     t        j                  |       }|j                  ddd      }t        | j                  |d      }|S )z=
        queryset to filter data based on permission
        TF)employee_id__is_activeapprovedcanceledzbase.add_worktyperequestr   get_querysetfilterr   r%   r'   querysets     r)   r0   z%DashboardWorkTypeRequest.get_queryset&   sM     #//5??#'%% # 
 &LL($>
 r*   Employeeemployee_idemployee_id__get_avatarzRequested Work Typework_type_idz
                hx-get='{detail_view}?instance_ids={ordered_ids}&dashboard=true'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                Q
                        style ="width:100px !important"
                        )actionr5   r7      F)__name__
__module____qualname____doc__r   r#   r0   _columns	row_attrsheader_attrsrecords_per_pageoption_methodrow_status_indicationsbulk_select_option__classcell__r(   s   @r)   r   r      s|    - - -
 
:'@A	
 	!>2G
I
L M!r*   r   c                   |     e Zd ZdZ ed      ddf ed      dfgZddddZd	ed
df fdZdZ	dZ
dZdZdZd Z xZS )ShiftRequestToApproveFr4   r5   r6   zRequested Shiftshift_idr8   )r9   r5   rK   r   r   Nc                 D    t        |   di | t        d      | _        y )Nzdashboard-shift-requestr!   r"   r#   r   r$   r&   s     r)   r#   zShiftRequestToApprove.__init__h   s     "6"!";<r*   z
                hx-get='{shift_details}?instance_ids={ordered_ids}&dashboard=true'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                r:   c                     t        j                  |       }|j                  ddd      }t        | j                  |d      }|S )NFT)r-   r.   r,   zbase.add_shiftrequestr/   r2   s     r)   r0   z"ShiftRequestToApprove.get_querysety   sF    "//5??U4 # 
 &dllH>UVr*   )r;   r<   r=   rF   r?   r@   rB   r   r#   rA   rC   rD   rE   r0   rG   rH   s   @r)   rJ   rJ   R   s      
:'@A	
	z*G
L= = =I M!r*   rJ   %employee.view_employeeworkinformationc                   z     e Zd ZdZdeddf fdZeZeZ	dZ
dZ ed      df ed	      d
fgZddiZdZ fdZ xZS )EmployeeWorkInformationListz1
    Employee work information progress list
    r   r   Nc                 R    t        |   di | d| _        t        d      | _        y )Npendingzemp-workinfo-completer!   )r"   r#   view_idr   r$   r&   s     r)   r#   z$EmployeeWorkInformationList.__init__   s'    "6" !"9:r*   Fr4   r5   Progressprogress_colr8   z
                hx-get='{get_edit_url}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                c                     t         |          }t        | j                  |d      }|j	                  |D cg c]"  }|j                         dk7  s|j                  $ c}      }|S c c}w )NrO   d   )id__in)r"   r0   r   r%   r1   calculate_progressid)r'   r3   objr(   s      r)   r0   z(EmployeeWorkInformationList.get_queryset   sj    7')%LL($K
 ??&.Rs#2H2H2Jc2QCFFR # 
  Ss   A'A')r;   r<   r=   r>   r   r#   r   modelr   filter_classrF   show_toggle_formr?   r@   rB   rA   r0   rG   rH   s   @r)   rQ   rQ      sv    
; ; ;
 $E0L 
:&	
:'G 	 LI r*   rQ   z'employee.change_employeeworkinformationc                   >     e Zd ZdZeZeZ fdZdede	f fdZ
 xZS )EmployeeWorkInformationFormViewz-
    form view for edit work information
    c                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        |S )NzUpdate Work Informationr!   )r"   get_context_dataforminstancepkr?   
form_classverbose_name)r'   r   contextr(   s      r)   rc   z0EmployeeWorkInformationFormView.get_context_data   s?    '*4V499  +,-F+GDOO(r*   rd   r   c                     |j                         r\|j                  j                  r+t        d      }t	        j
                  | j                  |       |j                          t        d      S t        | )  |      S )NzWork Information Updatedz^<script>$('#genericModal').removeClass('oh-modal--show');$('#pendingReload').click();</script>)is_validre   rf   r?   r   successr%   saver   r"   
form_valid)r'   rd   messager(   s      r)   rn   z*EmployeeWorkInformationFormView.form_valid   sc    ==?}}67  w7IIKp  w!$''r*   )r;   r<   r=   r>   r   rg   r   r]   rc   r   rn   rG   rH   s   @r)   ra   ra      s2    
 3J#E	(@ 	(\ 	( 	(r*   ra   c                   \     e Zd ZdZeZeZdZde	ddf fdZ
 ed      dfgZdZ fd	Z xZS )
DashboardAnnouncementViewz.
    list view for dashboard announcement
    Fr   r   Nc                 D    t        |   di | t        d      | _        y )Nzdashboard-announcement-listr!   rM   r&   s     r)   r#   z"DashboardAnnouncementView.__init__   s     "6"!"?@r*   Titleannouncement_custom_colc                     t         |          }|j                  t        j                         j                               j                  d      }|S )N)expire_date__ltz-created_at)r"   r0   excluder   todaydateorder_by)r'   r3   r(   s     r)   r0   z&DashboardAnnouncementView.get_queryset   sH    7')##HNN4D4I4I4K#LUU
 r*   )r;   r<   r=   r>   r   r]   r   r^   r_   r   r#   r?   r@   rF   r0   rG   rH   s   @r)   rq   rq      sX     E%LA A A
 
7./G  r*   rq   zbase.view_announcementc                   H     e Zd ZdZeZeZdZdZ	 e
d      dfgZ fdZ xZS )AnnouncementViewedByListz=
    List view for announcement viewed by on detail view
    Fz	Viewed Byannouncement_viewed_by_colc                     t         |          }| j                  j                  d      }|j	                  |d      }|S )Nannouncement_idT)announcement_id__idviewed)r"   r0   r   getr1   )r'   r3   anounr(   s      r)   r0   z%AnnouncementViewedByList.get_queryset   s:    7') 12??uT?Jr*   )r;   r<   r=   r>   r   r]   r   r^   rF   r_   r?   r@   r0   rG   rH   s   @r)   r|   r|      s@     E)L 
;56G r*   r|   N)/r>   r   typingr   django.contribr   django.httpr   django.urlsr   django.utils.decoratorsr   django.utils.translationr	   r?   base.cbv.shift_requestr
   base.cbv.work_type_requestr   base.decoratorsr   base.filtersr   r   base.methodsr   base.modelsr   r   employee.filtersr   employee.formsr   employee.modelsr   horilla_views.cbv_methodsr   r   horilla_views.generic.cbv.viewsr   r   r   rJ   rQ   ra   rq   r|   r!   r*   r)   <module>r      sZ     # $  4 6 3 : - C + 6 : < 3 I L .z232 3 33l .z2,, , 3,^ .z2=>Z)/ ) 3)X .z2?@z(o ( 3(4 .z2  38 .z2%&>?jQ  R 3r*   