
    siރ                        d Z ddl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 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 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"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?  eed       e e,d      d       G d de#                    Z@ e e+d      d       G d de#             ZA eed       e ed       d       G d! d"e#                    ZB eed       e e-d#      d       G d$ d%e#                    ZC eed       G d& d'e"             ZD eed       G d( d)e&             ZE eed       G d* d+e%             ZF eed       G d, d-e'             ZG eed       G d. d/e              ZH G d0 d1e      ZI eed       G d2 d3e$             ZJ eed       G d4 d5e$             ZK ej                  d6      r+ eed       e e+d7      d       G d8 d9e$                    ZM ej                  d:      r, eed       e e+d7      d       G d; d<e$                    ZNyy)=z8
This page handles the cbv methods for existing process
    N)datetime	timedelta)forms)apps)messages)HttpResponse)reversereverse_lazy)method_decorator)gettext_lazy)intial_notice_period)eval_validate)get_horilla_model_class)login_requiredpermission_required)HorillaKanbanView)Pipeline)HorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewHorillaSectionViewHorillaTabView)notify)any_manager_can_enteroffboarding_manager_can_enter&offboarding_or_stage_manager_can_enter)PipelineEmployeeFilterPipelineFilterPipelineStageFilter)OffboardingEmployeeFormOffboardingFormOffboardingStageFormTaskForm)EmployeeTaskOffboardingOffboardingEmployeeOffboardingStageOffboardingTask)any_manageris_offboarding_managerdispatch)name offboarding.add_offboardingstagec                   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 )OffboardingStageFormView%
    form view for create button
    zCreate Offboarding Stagec                 h   t        |   di |}| j                  j                  d   }|| j                  j
                  d   _        t        j                         | j                  j
                  d   _	        | j                  j                  j                  rt        d      | j                  _        |S )Noffboarding_idzUpdate Offboarding Stage )superget_context_datarequestGETformfieldsinitialr   HiddenInputwidgetinstancepk_
form_classverbose_name)selfkwargscontextr3   	__class__s       @/var/www/python-projects/worksol/offboarding/cbv/exit_process.pyr6   z)OffboardingStageFormView.get_context_dataI   s    '*4V4))*:;5C		)*2494E4E4G		)*199  +,-G+HDOO(    r9   returnc                    |j                         rn|j                  j                  rt        d      }nt        d      }|j	                          t        j                  | j                  |       | j                  d      S t        | )  |      S )Nz&Offboarding Stage Updated Successfullyz&Offboarding Stage Created Successfully'<script>window.location.reload</script>is_validr>   r?   r@   saver   successr7   r   r5   
form_validrC   r9   messagerF   s      rG   rP   z#OffboardingStageFormView.form_validR   sn    ==?}}DEDEIIKT\\73$$%NOOw!$''rH   )__name__
__module____qualname____doc__r#   rA   r(   modelr@   new_display_titler6   r   rP   __classcell__rF   s   @rG   r0   r0   <   s>    
 &JE45
(3 
( 
( 
(rH   r0   z#offboarding.add_offboardingemployeec                   J     e Zd ZdZeZeZ ed      Z	 fdZ
dedefdZ xZS )OffboardingStageAddEmployeeFormr1   Add Employeec                    t        |   di |}t        | j                        d   rt        | j                        d   nd}t	        j
                         t        |      z   }| j                  j                  d   }|| j                  j                  d   _
        || j                  j                  d   _
        | j                  j                  j                  rt        d      | j                  _        |S )Nget_initial_notice_periodr   )daysstage_idnotice_period_endszUpdate Employeer4   )r5   r6   r   r7   r   todayr   r8   r9   r:   r;   r>   r?   r@   rA   rB   )rC   rD   rE   default_notice_periodend_datera   rF   s         rG   r6   z0OffboardingStageAddEmployeeForm.get_context_datak   s    '*4V4 $DLL12MN !./JK 	
 >>#i5J&KK<<##J//7		$,9A		-.699  +,->+?DOO(rH   r9   rI   c                    | j                   j                  d   }t        j                  j	                  |      }|j                         r(|j                  j                  rt        d      }nt        d      }|j                         }t        j                  | j                   j                  j                  |j                  j                  d| d|j                    d| d|j                    d	| d
|j                    dd| d|j                    d| d|j                    t#        d      d	       |j                          t%        j&                  | j                   |       | j)                  d      S y )Nra   )idzUpdated EmployeezAdded EmployeezYou have been added to the z of u"   لقد تمت إضافتك إلى u    من zDu wurdest zu z von u    hinzugefügtu   Has sido añadido a z de u   Vous avez été ajouté à zoffboarding-pipelineinformation)	recipientverbverb_arverb_deverb_esverb_frredirecticonrK   )r7   r8   r(   objectsgetrM   r>   r?   r@   rN   r   senduseremployee_getemployee_idemployee_user_idr3   r	   r   rO   r   )rC   r9   ra   stagerR   r>   s         rG   rP   z*OffboardingStageAddEmployeeForm.form_validz   sK   <<##J/ ((,,,9==?}}./,-99;LL%%22&22CC6ugT%BVBVAWX@veNbNbMcd,UG59M9M8Nm\25'e>R>R=ST9%UEYEYDZ[$%;<&
 IIKT\\73$$%NOO' rH   )rS   rT   rU   rV   r!   rA   r'   rW   r@   rX   r6   r   rP   rY   rZ   s   @rG   r\   r\   _   s;     )JE.)P6 P< PrH   r\   zoffboarding.add_offboardingc                   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 )OffboardingCreateFormViewz3
    form view for create and edit offboarding
    zCreate Offboardingc                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        |S )NzUpdate Offboardingr4   )r5   r6   r9   r>   r?   r@   rA   rB   rC   rD   rE   rF   s      rG   r6   z*OffboardingCreateFormView.get_context_data   s?    '*4V499  +,-A+BDOO(rH   r9   rI   c                    |j                         rh|j                  j                  rt        d      }nt        d      }|j	                          t        j                  | j                  |       t        d      S t        | )  |      S )NzOffboarding UpdatedzOffboarding savedz)<script>window.location.reload()</script>rL   rQ   s      rG   rP   z$OffboardingCreateFormView.form_valid   sh    ==?}}12/0IIKT\\73 KLLw!$''rH   )rS   rT   rU   rV   r"   rA   r&   rW   r@   rX   r6   r   rP   rY   rZ   s   @rG   rz   rz      s=     !JE./
( 
(< 
( 
(rH   rz   zoffboarding.add_offboardingtaskc                   ^     e Zd ZdZeZeZ ed      Z	de
f fdZ fdZdedef fdZ xZS )OffboardingTaskFormViewz9
    form view for create and edit offboarding tasks
    zCreate TaskrI   c                     t         |          }| j                  j                  j	                  d      }t
        j                  j                  |      }|r
||d<   ||d<   |S )Nra   ra   tasks_to)r5   get_initialr7   r8   rr   r'   rq   filter)rC   r;   ra   	employeesrF   s       rG   r   z#OffboardingTaskFormView.get_initial   s_    '%'<<##''
3'//666I	"*GJ"+GJrH   c                    t        |   di |}| j                  j                  j	                  d      }t
        j                  j                  |      }| j                  j                  j                  rt|| j                  j                  d   _        || j                  j                  d   _        || j                  j                  d   _        t        d      | j                  _        |S )Nra   r   r   zUpdate Taskr4   )r5   r6   r7   r8   rr   r'   rq   r   r9   r>   r?   r:   r;   querysetr@   rA   rB   )rC   rD   rE   ra   r   rF   s        rG   r6   z(OffboardingTaskFormView.get_context_data   s    '*4V4<<##''
3'//666I	99  3;DIIZ(03<DIIZ(04=DIIZ(1+,]+;DOO(rH   r9   c                    |j                         rm|j                  j                  rt        d      }nt        d      }|j	                          t        j                  | j                  |       | j                         S t        | )  |      S )NzTask Updatedz
Task AddedrL   rQ   s      rG   rP   z"OffboardingTaskFormView.form_valid   sh    ==?}}N+L/IIKT\\73$$&&w!$''rH   )rS   rT   rU   rV   r)   rW   r$   rA   r@   rX   dictr   r6   r   rP   rY   rZ   s   @rG   r   r      sH     EJ-(T 
(x 
(L 
( 
(rH   r   c            	           e Zd ZdZeZ ed      ZddddZdZ	 ed      d	f ed
      df ed      df ed      df ed      df ed      df ed      ddfgZ
ddiZy)ExitProcessDetailViewz
    detail view
    Detailsemployee_id__get_full_namedetail_subtitleemployee_id__get_avatar)titlesubtitleavatarz)cbv/exit_process/detailed_page_empty.htmlEmail&employee_id__employee_work_info__emailzJob Position0employee_id__employee_work_info__job_position_idContactemployee_id__phonezNotice Period start Datenotice_period_startszNotice Period end Daterb   Stageget_stage_colTasksdetail_view_task_customcustom_template   N)rS   rT   rU   rV   r'   rW   r@   r   headerempty_templatebodycolsr4   rH   rG   r   r      s      EiLE-%+F
 AN	
7=>	
>	NO	
9+,	
%	&(>?	
#	$&:;	
7_%	
7.0ABD 	"2DrH   r   c                   8    e Zd ZdZdZ ed      Z ed      ZdZy)OffboardingPipelineViewz#
    Offboarding Pipeline View
    z#cbv/exit_process/pipeline_view.htmlzoffboarding-pipeline-navget-offboarding-tabpipelineContainerN)	rS   rT   rU   rV   template_namer
   nav_urlview_urlview_container_idr4   rH   rG   r   r      s*     :M56G12H+rH   r   c                   L     e Zd ZdZdZdZ ed      ZdZdZ	 fdZ
 fdZ xZS )	OffboardingPipelineNavz.
    Offboarding Pipeline Navigation View
    zExit Processz#pipelineContainerr   z%cbv/exit_process/pipeline_filter.htmlFc                     t        |   di | | j                  j                  j	                  d      rdt        d       d| _        ddt        d       dd	d
dt        d       ddd	g| _        y )Nzoffboarding.create_offboardingzJ
                class="oh-btn oh-btn--secondary"
                hx-get="zcreate-offboardingz"
                hx-target="#objectDetailsModalTarget"
                data-toggle="oh-modal-toggle"
                data-target="#objectDetailsModal"
            listzlist-outliner   z3
                    title ='List'
                )typerp   urlattrscardzgrid-outlinez
?view=cardz3
                    title ='Card'
                r4   )r5   __init__r7   rt   has_permr
   create_attrs
view_typesrC   rD   rF   s     rG   r   zOffboardingPipelineNav.__init__  s    "6"<<%%&FG%%&:;< =!D &&'<=>	 &&'<=>jI	
rH   c                 t    t        |   di |}t               |d<   t               |d<   t	               |d<   |S )Nemployee_filterpipeline_filterstage_filterr4   )r5   r6   r   r   r    r|   s      rG   r6   z'OffboardingPipelineNav.get_context_data5  sC    '*4V4%;%=!"%3%5!""5"7rH   )rS   rT   rU   rV   	nav_titlesearch_swap_targetr
   
search_urlfilter_body_templateapply_first_filterr   r6   rY   rZ   s   @rG   r   r     s;     I-34JB
< rH   r   c                   &     e Zd ZdZeZ fdZ xZS )PipeLineTabViewz
    Pipeline Tab View
    c           
      Z   t        |   d!i | | j                  | j                  j                        j
                  j                  d      }| j                  j                  j                  dd      }g | _        |D ])  }i }g |d<   |j                  |d<   t        dd|j                  i	      }|dk(  rt        d
d|j                  i	      }||d<   t        d      |d<   | j                  j                  j                  d      s)t        | j                  j                  j                         ru|d   j#                  t        d      dt        d       d|j                   dd       |d   j#                  t        d      dt        dd|j                  i	       dd       | j                  j                  j                  d      s)t        | j                  j                  j                         r;|d   j#                  t        d      dt        dd|j                  i	       dd       | j                  j                  j                  d      r:|d   j#                  t        d      dt        d       d|j                   d d       | j                  j#                  |       , y )"NT)	is_activeviewr   actionsr   zget-offboarding-kanban-stager?   rD   zget-offboarding-stager3   r   Stagesbadge_labelr.   z	Add Stagez
                            data-toggle="oh-modal-toggle"
                            data-target="#genericModal"
                            hx-get="zcreate-offboarding-stagez?offboarding_id=z"
                            hx-target="#genericModalBody"
                            style="cursor: pointer;"
                        actionr   zManage Stage Orderzupdate-stage-sequenceoffboarding.change_offboardingEditzupdate-offboardingzoffboarding.delete_offboardingDeletez
                            data-toggle="oh-modal-toggle"
                            data-target="#deleteConfirmation"
                            hx-get="generic-deletez"?model=offboarding.Offboarding&pk=z"
                            hx-target="#deleteConfirmationBody"
                            style="cursor: pointer;"
                        r4   )r5   r   filter_classr7   r8   qsr   rr   tabsr   r	   r?   r@   rt   r   r+   ru   append)rC   rD   offboardings	view_typeoffboardingtabr   rF   s          rG   r   zPipeLineTabView.__init__G  s   "6"(()9)9:==DDtDTLL$$((8		' E	"KCC	N&,,CL8$AWXCF"+5E{~~4V CJ!"8C||  ))2'(9(9(F(FGI%%"#K.&% &--G%H$IIYZeZhZhYi j"	 I%%"#$8"9&% &--DTS^SaSaLb%c$d e"	 ||  ))0'(9(9(F(FGI%%"#F)&% &--A4Q\Q_Q_J`%a$b c"	 ||  ))*JKI%%"#H+&% &--=%>$??abmbpbpaq r"	 IIS!KE	"rH   )rS   rT   rU   rV   r   r   r   rY   rZ   s   @rG   r   r   ?  s     "LJ" J"rH   r   c                   t     e Zd ZdZeZeZdZdZ	de
e ed      ddgddd	d
dddd
dddd
gdgZ fdZ xZS )OffboardingPipelineStagez$
    Offboarding Pipeline Stage
    ra   OffboardingEmployeeRecordszget-offboarding-employees-cbvzoffboarding_stage_id={pk}z#offboarding_id={offboarding_id__pk}r]   8offboarding.cbv.accessibility.add_employee_accessibilitya  
                        data-toggle="oh-modal-toggle"
                        data-target="#genericModal"
                        hx-get="{get_add_employee_url}"
                        hx-target="#genericModalBody"
                        class="oh-dropdown__link"
                    r   accessibilityr   r   6offboarding.cbv.accessibility.edit_stage_accessibilityz
                        hx-target="#genericModalBody"
                        hx-get="{get_update_url}"
                        data-toggle="oh-modal-toggle"
                        data-target="#genericModal"
                    r   8offboarding.cbv.accessibility.delete_stage_accessibilityz
                        data-target="#deleteConfirmation"
                        data-toggle="oh-modal-toggle"
                        hx-get="{get_delete_url}"
                        hx-target="#deleteConfirmationBody"
                    )fieldrW   r   r   
parametersr   c                 d    t         |          }|j                  d      | _        | j                  S )Nsequence)r5   get_querysetorder_byr   )rC   r   rF   s     rG   r   z%OffboardingPipelineStage.get_queryset  s,    7') ))*5}}rH   )rS   rT   rU   rV   r'   rW   r   r   grouperselected_instances_key_namer(   r    r
   allowed_fieldsr   rY   rZ   s   @rG   r   r     s      E)LG">  %) ?@+5 -%_
 %%]	 '%_	- *	
,N\ rH   r   c                   x     e Zd ZdZeZeZeZ	dZ
dZdZdZdddd	d
ddd	dddd	gZdddddZ fdZ fdZ xZS )OffboardingKanbanViewz!
    Offboarding Kanban View
    ra   
   Fz
        hx-get='{get_individual_url}'
        hx-target='#genericModalBody'
        data-toggle = 'oh-modal-toggle'
        data-target="#genericModal"
        data-group-order='{ordered_group_json}'
    r]   r   z
                data-toggle="oh-modal-toggle"
                data-target="#genericModal"
                hx-get="{get_add_employee_url}"
                hx-target="#genericModalBody"
                class="oh-dropdown__link"
            r   r   r   z
                hx-target="#genericModalBody"
                hx-get="{get_update_url}"
                data-toggle="oh-modal-toggle"
                data-target="#genericModal"
            r   r   z
                data-target="#deleteConfirmation"
                data-toggle="oh-modal-toggle"
                hx-get="{get_delete_url}"
                hx-target="#deleteConfirmationBody"
            z{employee_id__get_avatar}z{employee_id__get_full_name}z{notice_period_starts}z{notice_period_ends})	image_srcr   zNotice period startzNotice period endc                    t        |   di | ddddddddd	d
dddddddddg| _        | j                  j                  j                  d      r.| j                  j                  ddd| j                   dd       y y )Nz	Send Mailr   z
                    data-target="#sendMailModal"
                    data-toggle="oh-modal-toggle"
                    hx-get="{get_mail_send_url}"
                    hx-target="#mail-content"
                r   Notesa-  
                    data-target="#genericSidebar"
                    data-toggle="oh-modal-toggle"
                    hx-get="{get_notes_url}"
                    hx-target="#genericOffCanvas"
                    onclick="$('#genericSidebar').addClass('oh-activity-sidebar--show')"
                r   get_archive_titlez<offboarding.cbv.accessibility.archive_employee_accessibilityz
                    data-target="#objectDetailsModal"
                    data-toggle="oh-modal-toggle"
                    hx-get="{get_archive_url}"
                    hx-target="#objectDetailsModalTarget"
                r   z9offboarding.cbv.accessibility.edit_employee_accessibilityz
                    data-target="#objectDetailsModal"
                    data-toggle="oh-modal-toggle"
                    hx-get="{get_edit_url}"
                    hx-target="#objectDetailsModalTarget"
                zmanaging recordsz
                    data-target="#objectDetailsModal"
                    data-toggle="oh-modal-toggle"
                    hx-get="{get_managing_record_url}"
                    hx-target="#objectDetailsModalTarget"
                z&offboarding.delete_offboardingemployeer   z
                        hx-confirm="Do you want to delete this offboarding user?"
                        hx-post="{get_delete_url}"
                        hx-swap="none"
                        hx-on-htmx-after-request = "$(`#z7`).find('.reload-record').click()"
                    r4   )r5   r   r   r7   rt   r   r   view_idr   s     rG   r   zOffboardingKanbanView.__init__  s    "6" &![	 "	 .!_	 !!\	 -!\	S3
j <<%%&NOLL&%_"9 :> G		 PrH   c                     t        |   |i |}| j                  j                  d      }|r|j	                  |      }|S )Nr?   r3   )r5   get_related_groupsrD   rr   r   )rC   argsrD   related_groupsoff_idrF   s        rG   r   z(OffboardingKanbanView.get_related_groupsU  sE    3TDVD&+22&2INrH   )rS   rT   rU   rV   r'   rW   r   r   r    group_filter_class	group_keyrecords_per_pageshow_kanban_confirmationkanban_attrsgroup_actionsdetailsr   r   rY   rZ   s   @rG   r   r     s      E)L,I$L %W
	
 U		
 W		
- MF 1/73	GDL rH   r   c                        e Zd ZdZeZeZ ed      Z	ddgZ
dZdZdZdZg dZdZd	Zd
gZ fdZd fd	Z fdZ fdZd Z fdZ fdZ xZS )OffboardingEmployeeListz(
    Offboarding Employee List View
    r   offboarding_stage_idr3   Fzcbv/pipeline/empty.html)Employeerv   r   )zNotice Periodget_notice_period_col)z
Start Dater   )zEnd Daterb   )r   r   zTask Statusget_task_status_colget_action_colz
        class = "fw-bold"
        hx-get='{get_individual_url}'
        hx-target='#genericModalBody'
        data-toggle = 'oh-modal-toggle'
        data-target="#genericModal"
    ra   c                 l    d| j                   j                  d    | _        t        |   |g|i |S )Nr   r   )r7   r8   selected_instances_key_idr5   rr   )rC   r7   r   rD   rF   s       rG   rr   zOffboardingEmployeeList.get  sA    ()9)9:P)Q(RS 	& w{74T4V44rH   c                    t        | dd       st        j                  j                         }t	        |   ||g|i |}| j                  j                  j                  d      sYt        | j                  j                  j                        s0|j                  | j                  j                  j                        }|| _        | j                  S )Nr   offboarding.view_offboarding)rv   )getattrr'   rq   entirer5   r   r7   rt   r   r*   ru   r   r   )rC   r   filteredr   rD   r   rF   s         rG   r   z$OffboardingEmployeeList.get_queryset  s    tZ.$,,335Bw+BJ4J6JH!!**+IJt||00==>#??t||7H7H7U7U?V$DM}}rH   c                    t        |   di | d| j                  j                  j	                  d       | _        t        j                  j                  | j                  j                        j                  dd      | _        | j                  | j                  _        t        j                  j                  | j                  j                        j                  dd      | _        | j                  | j                  _        t        j                  j                  | j                  j                        j                  dd      | _        | j                  | j                  _        y )NoffboardingStageContainerr   )managers__employee_user_idr?   Tflatr4   )r5   r   r7   r8   rr   r   r)   rq   r   rt   values_listmanaging_offboarding_tasksr(   managing_offboarding_stagesr&   managing_offboardingsr   s     rG   r   z OffboardingEmployeeList.__init__  s0   "6"'(8(8(<(<=S(T'UV 	 +:*A*A*H*H'+||'8'8 +I +

+d+
& 	' 372Q2Q/+;+C+C+J+J'+||'8'8 ,K ,

+d+
& 	( 483S3S0%0%8%8%?%?'+||'8'8 &@ &

+d+
& 	" .2-G-G*rH   c                 X   | j                   j                  d   }t        j                  j	                  |      }t        |   di |}|D ]g  }|d   j                  d|j                   dt        dd|j                  i       d	t        d
       d|j                   d	d|j                   df       i | j                   j                  j                  d      s)t        | j                   j                  j                        r&|d   j                  dt        d       d| ddf       |S )Nr   r   columnsa  
                        <div class="oh-hover-btn-container position-relative">
                            <button class="oh-hover-btn fw-bold"
                                style="border: none !important;"
                            >
                                z
                            </button>
                            <div class="oh-hover-btn-drawer oh-hover-btn-table-drawer">
                                <button
                                    hx-get="zoffboarding-update-taskr?   r   a  "
                                    hx-target="#genericModalBody"
                                    data-toggle="oh-modal-toggle"
                                    data-target="#genericModal"
                                    class="oh-hover-btn__small"
                                    style="
                                        border:1px hsl(8,77%,56%) solid;
                                    "
                                    title="Edit"
                                >
                                    <ion-icon name="create-outline"></ion-icon>
                                </button>
                                <a
                                    hx-get="r   z&?model=offboarding.OffboardingTask&pk=a  "
                                    hx-target="#deleteConfirmationBody"
                                    data-target="#deleteConfirmation"
                                    data-toggle="oh-modal-toggle"
                                    class="oh-hover-btn__small"
                                    style="
                                        border:1px hsl(8,77%,56%) solid;
                                    "
                                    title="Delete"
                                >
                                    <ion-icon name="trash-outline"></ion-icon>
                                </a>
                            </div>
                        </div>
                    get__taskz%perms.offboarding.add_offboardingtaskz
                        <button
                            class="oh-checkpoint-badge text-success"
                            data-toggle="oh-modal-toggle"
                            data-target="#genericModal"
                            hx-get="zoffboarding-add-taskz
?stage_id=z"
                            hx-target="#genericModalBody"
                            >
                            + Task
                        </button>
                         r4   )r7   r8   r)   rq   r   r5   r6   r   r   r	   r?   rg   rt   r   r*   ru   )rC   rD   ra   tasksrE   taskrF   s         rG   r6   z(OffboardingEmployeeList.get_context_data  s]   <<##$:;''...A'*4V4 *	DI%%!
 "& -- .55NW[\`\c\cVd-e,f g- .55E-F,GGmnrnunumv w-$J 477)5)M')*	V <<%%3
**778I%%%
 &--C%D$EZPXz Z
   rH   c                     | j                   j                  j                  d      xsP | j                   j                  j                  d      xs) t        | j                   j                  j                        S )Nz#offboarding.change_offboardingstager   )r7   rt   r   r*   ru   )rC   s    rG   bulk_update_accessibilityz1OffboardingEmployeeList.bulk_update_accessibility  s[    LL&&'LM ;||  ))*JK;4<<,,99:	
rH   c           
         t         |          }| j                  j                  j	                  d      }| j                  j                  j	                  d      }|j
                  j	                  d      j                  j                  |      |j
                  j	                  d      _        t        j                  j                  |      }|D ]p  }t        j                  dgt        t        j                        z   |j                  dt        j                   dd	i
            |j
                  d|j"                   <   r | j%                         s|d= |S )Nr3   r   ra   r   r   )r  z
----------Fclasszoh-select oh-select-2 w-100)r   )choiceslabelrequiredr=   bulk_task_status_)r5   get_bulk_formr7   r8   rr   r:   r   r   r)   rq   r   ChoiceFieldr   r%   statusesr   Selectr?   r  )rC   r9   r3   r   r  r  rF   s         rG   r&  z%OffboardingEmployeeList.get_bulk_form  s%   w$&))--.>?#||//334JK/3{{0

(6668 	
#,  ''..8L.M 		D9>9J9J& |,,-. jj||74Q*RS:DKK+DGG956		 --/Z rH   c           
         t         	|   |      }|j                  j                         D ci c]J  \  }}t	        j
                  d|      r/t        t	        j
                  d|      j                  d            |L }}}|j                  j                  dd      }t        |      }|j                         D ]6  \  }}t        j                  j                  ||      j                  |       8 |S c c}}w )Nzbulk_task_status_(\d+)   instance_idsz[])employee_id__intask_idstatus)r5   handle_bulk_submissionPOSTitemsresearchintgrouprr   r   r%   rq   r   update)
rC   r7   responsekeyvaluemapped_datar,  r?   r0  rF   s
            rG   r1  z.OffboardingEmployeeList.handle_bulk_submission
  s    71': &ll002
Uyy2C8 		3S9??BCUJ
 

 ||''=$\2%++- 	$JB  '' ,b ( fFf#	$ 
s   AC2)NF)rS   rT   rU   rV   r'   rW   r   r   r
   r   filter_keys_to_remove	next_prevquick_exportfilter_selectedcustom_empty_templater  action_method	row_attrsbulk_update_fieldsrr   r   r   r6   r  r&  r1  rY   rZ   s   @rG   r   r   ^  s      E)L34J35EFILO5G )MI %5
H(BH
2 rH   r   c                   :     e Zd ZdZeZeZdZdZ	 fdZ
g dZ xZS )DashboardTaskListviewz)
    For dashboard task status table
    Fdashboard_task_statusc                 d    t         j                  j                         }t        |   |      }|S )zX
        Returns a filtered queryset of records assigned to a specific employee
        )r   )r'   rq   r  r5   r   )rC   r   r   rF   s      rG   r   z"DashboardTaskListview.get_queryset'  s0    
 !((//17''4rH   )r  )r   ra   r  )rS   rT   rU   rV   r'   rW   r   r   bulk_select_optionr   r   r  rY   rZ   s   @rG   rF  rF    s+      E)L%GGrH   rF  assetr
  c                   @     e Zd ZdZdZdZ fdZ fdZg dZdZ	 xZ
S )DashboardNotReturndAsssets1
        For dashboard task status table
        FrG  c                 j    t        dd      | _        | j                  | _        t        |   |i | y )NrJ  assetassignment	app_labelrW   )r   AssetAssignmentrW   r5   r   rC   r   rD   rF   s      rG   r   z#DashboardNotReturndAsssets.__init__E  s7    #:!):$D  --DJGd-f-rH   c                 .   t         j                  j                         j                  dd      }| j                  j                  j                         j                  d|      }t        |          j                  |j                  dd            }|S )`
            Returns a filtered queryset of records assigned to a specific employee
            employee_id__idTr  )return_status__isnullassigned_to_employee_id__inrg   id__in)r'   rq   r  r  rW   r   r5   r   )rC   offboarding_employeesr   r   rF   s       rG   r   z'DashboardNotReturndAsssets.get_querysetL  s    
 %8$?$?$F$F$H$T$T! %U %! ##**,33&*,A 4 B
 $&--R^^Dt^5T-U  OrH   ))r  &assigned_to_employee_id__get_full_name#assigned_to_employee_id__get_avatar)Assetasset_id__asset_name)Reminderget_send_mail_employee_linkz
                    onclick="
                    localStorage.setItem('activeTabAsset','#tab_2');
                    window.location.href='{get_asset_of_offboarding_employee}'"
                    )rS   rT   rU   rV   rI  r   r   r   r  rC  rY   rZ   s   @rG   rL  rL  9  s-    
	 #)	.	"
	rH   rL  pmsc                   <     e Zd ZdZdZdZg dZ fdZ fdZ xZ	S )DashboardFeedbackViewrM  FrG  ))r  r   r   )Feedbackreview_cycle)Statusr0  c                 j    t        dd      | _        | j                  | _        t        |   |i | y )Nrb  feedbackrP  )r   re  rW   r5   r   rS  s      rG   r   zDashboardFeedbackView.__init__  s.    3e:VDMDJGd-f-rH   c                    t         j                  j                         j                  dd      }|rt	        t
        t        |       \  }}ng g }}| j                  j                  j                         j                  |      j                  d      }t        | -         j                  |j                  dd      	      }|S )
rU  rV  r   )r-  Closedr/  rg   Tr  rY  )r'   rq   r  r  mapr   ziprW   r   excluder5   r   )rC   r[  id_list	date_listr   r   rF   s         rG   r   z"DashboardFeedbackView.get_queryset  s     %8$?$?$F$F$H$T$T!#9%! %%(s4I/J%K"%' 

""))+0)  $&--R^^Dt^5T-U  OrH   )
rS   rT   rU   rV   rI  r   r  r   r   rY   rZ   s   @rG   rd  rd  p  s+    
	 #)
	.
	 	rH   rd  )OrV   r4  r   r   djangor   django.appsr   django.contribr   django.httpr   django.urlsr	   r
   django.utils.decoratorsr   django.utils.translationr   r@   base.context_processorsr   base.methodsr   horilla.methodsr   horilla_views.cbv_methodsr   r    horilla_views.generic.cbv.kanbanr   "horilla_views.generic.cbv.pipeliner   horilla_views.generic.cbv.viewsr   r   r   r   r   r   notifications.signalsr   offboarding.cbv_decoratorsr   r   r   offboarding.filtersr   r   r    offboarding.formsr!   r"   r#   r$   offboarding.modelsr%   r&   r'   r(   r)   +offboarding.templatetags.offboarding_filterr*   r+   r0   r\   rz   r   r   r   r   r   r   r   r   rF  is_installedrL  rd  r4   rH   rG   <module>r     s   
 (   # $ - 4 6 8 & 3 I > 7  ) 
 
   .z2!"DEJ( ( 3(> ?@z.Po .P.Pb .z2%&CD:V( ( W 3(: .z2*+LM	)(o )(	 3
)(X .z2/  36 .z2,0 , 3, .z20^ 0 30f .z2Q"n Q" 3Q"h .z2:x : 3:zI- IX .z2xo x 3xv .z2O  38 4Wn:6<=J._ . 7.b 4Un:6<=J& & 7& rH   