
    vgq                        d Z ddlZddlZddlZddlZddl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 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* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z> ddl?m@ZA ddlBmCZC ddlDmEZEmFZFmGZG ddlHmIZImJZJ ddlKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZUmVZVmWZWmXZX ddlYmZZZm[Z[m\Z\ ddl]m^Z^ dd l_m`Z`maZambZb ddlcm@Z@  ej                  ee      Z<e=e; eFd!      d"                      Zfd# Zge=e; eFd$      d%                      Zhe= e>d&       eFd&      d'                      Zie=e; eGd(      d)                      Zje=e; eGd*      d+                      Zke= e>d,       eGd,      d-                      Zle= e>d.      d/               Zme= e>d0      d1               Zne= e>d2      d3               Zoe=e; eEd4      d5                      Zpd6 Zqe= e>d7      d8               Zre= e>d9:      d;               Zse=e; e>d7      d<                      Zte= eEd=      d>               Zud? Zve= eEd4      d@               Zwe= eEd4      dA               Zxi ZydB ZzdC Z{dD Z|dE Z}dF Z~dG Ze=dH        Ze= e(dIg       eEdJ      dK                      Ze=dL        Ze= eEdJ      dM               Ze= e(dIg       eGdN      dO                      Ze= e(dIg       eGdN      dP                      Ze= e(dIg       eEdJ      dQ                      Ze=dR        Ze= e>d7      dS               Ze= e>d7      dT               Ze= e>d7      dU               Ze= eGd0      dV               Ze= eGdW      dX               Ze= e(dIg      e;dY                      Ze=e; eGd0      dZ                      Ze= eGdW      d[               Ze=e; eEd*      d\                      Ze= eEd]      d^               Ze= eEdJ      d_               Ze= e>d`      da               Ze=e; e>db      dc                      Ze=dd        Ze= e>d9      de               Zdf Zdg Zy)ha  
views.py

This module contains the view functions for handling HTTP requests and rendering
responses in your application.

Each view function corresponds to a specific URL route and performs the necessary
actions to handle the request, process data, and generate a response.

This module is part of the recruitment project and is intended to
provide the main entry points for interacting with the application's functionality.
    N)parse_qs)template)messages)login)User)EmailMessage	send_mail)	Paginator)ProtectedError)HttpResponseHttpResponseRedirectJsonResponse)redirectrender)render_to_string)reverse)gettext)gettext_lazy)require_http_methods)ConfiguredEmailBackend)closest_numbersgenerate_pdfget_key_instancesget_paginationsortby)HorillaMailTemplateJobPosition)EmployeeEmployeeBankDetailsEmployeeWorkInformation)settings)hx_request_requiredloggerlogin_requiredpermission_required)group_by_queryset)notify)all_manager_can_enterrecruitment_manager_can_enterstage_manager_can_enter)OnboardingCandidateFilterOnboardingStageFilter)BankDetailsCreationFormEmployeeCreationFormOnboardingCandidateFormOnboardingTaskFormOnboardingViewStageFormOnboardingViewTaskFormUserCreationForm)CandidateStageCandidateTaskOnboardingPortalOnboardingStageOnboardingTask)CandidateFilterCandidateReGroupRecruitmentFilter)RejectedCandidateForm)	CandidateRecruitmentRejectedCandidatezonboarding.add_onboardingstagec                    t               }| j                  dk(  rt        j                  j	                  |      }t        | j
                        }|j                         rp|j                         }|j                  j                  t        j                  j                  |j                  j                  d                   t        ||| |      S t        | d||d      S )a  
    function used to create onboarding stage.

    Parameters:
    request (HttpRequest): The HTTP request object.
    obj_id : recruitment id

    Returns:
    GET : return onboarding stage creation form template
    POST : return stage save function
    POSTidemployee_idid__inonboarding/stage_form.htmlformrC   )r1   methodr>   objectsgetrA   is_validsaverD   setr   filterdatagetlist
stage_saver   )requestobj_idrI   recruitment	stage_objs        $/var/www/horilla/onboarding/views.pystage_creationrY   U   s     #$D~~!))---8&w||4==?		I!!%%  ''tyy/@/@/O'P dK&AA'7$f9UVV    c                    | j                  d      }||_        |j                          t        j                  |t	        d             |j
                  j                         D cg c]  }|j                   }}t        j                  |j                  j                  |dddddd	t        d
      	       t        |d| |d      }t        |j                  j!                  d      dz         S c c}w )z
    function used to save onboarding stage.

    Parameters:
    request (HttpRequest): The HTTP request object.
    recruitment : recruitment object
    rec_id : recruitment id

    Returns:
    GET : return onboarding view
    Fcommitz New stage created successfully..*You are chosen as onboarding stage manager@   لقد تم اختيارك كمدير مرحلة التدريب.4   Sie wurden als Onboarding-Stage-Manager ausgewählt.C   Ha sido seleccionado/a como responsable de etapa de incorporación.M   Vous avez été choisi(e) en tant que responsable de l'étape d'intégration.people-circleonboarding-view	recipientverbverb_arverb_deverb_esverb_friconr   rG   rH   utf-8#<script>location.reload();</script>)rN   recruitment_idr   success_rD   allemployee_user_idr'   senduseremployee_getr   r   r   contentdecode)rI   rV   rT   rec_idstageemployeeusersresponses           rX   rS   rS   q   s     IIUI#E&E	JJLWa BCD7<7H7H7L7L7NO8X&&OEO
KK!!9RFU_*+
 -F/KH (+PP  Ps   %C,z!onboarding.change_onboardingstagec                 @   t         j                  j                  |      }t        |      }| j                  dk(  rMt        | j
                  |      }|j                         r%|j                         }|j                  j                  t        j                  j                  |j                  j                  d                   t        j                  | t!        d             |j                  j#                         D cg c]  }|j$                   }}t'        j(                  | j*                  j,                  |ddd	d
ddt/        d      	       t1        | d|||d      }t3        |j4                  j7                  d      dz         S t1        | d|||d      S c c}w )a  
    function used to update onboarding stage.

    Parameters:
    request (HttpRequest): The HTTP request object.
    stage_id : stage id
    recruitment_id : recruitment id

    Returns:
    GET : return onboarding stage update form template
    POST : return onboarding view
    rB   instancerA   rD   rE   zStage is updated successfully..r^   r_   r`   ra   rb   rc   rd   re   zonboarding/stage_update.html)rI   stage_idro   rm   rn   )r7   rK   rL   r1   rJ   rA   rM   rN   rD   rO   r   rP   rQ   rR   r   rp   rq   rr   rs   r'   rt   ru   rv   r   r   r   rw   rx   )	rT   r   ro   onboarding_stagerI   rz   r{   r|   r}   s	            rX   stage_updater      su     '..22h2?",<=D~~&w||>NO==?IIKE!!  ''tyy/@/@/O'P Wa(I&JK?D?P?P?T?T?VW8X..WEWKK))AZN]g$ !23
 .8~VH
    ''03XX  &8~N ) Xs   Fz!onboarding.delete_onboardingstagec                    	 t         j                  j                  |      j                          t	        j
                  | t        d             t        | j                  j                  dd            S # t         j                  $ r" t	        j                  | t        d             Y Yt        $ r" t	        j                  | t        d             Y w xY w)z
    function used to delete onboarding stage.

    Parameters:
    request (HttpRequest): The HTTP request object.
    stage_id : stage id

    Returns:
    GET : return onboarding view
    rB   z!The stage deleted successfully...zStage not found.z%There are candidates in this stage...HTTP_REFERER/)r7   rK   rL   deleter   rp   rq   DoesNotExisterrorr   r   META)rT   r   s     rX   stage_deleter      s    L##x#0779!$G"HI   0 0 EFF	 '' 7w"4 56 Lw"I JKLs   AA4 42C('CCzonboarding.add_onboardingtaskc                 "   | j                   j                  d      }t        j                  j                  |      }t	        d|i      }| j
                  dk(  rt	        | j                  d|i      }|j                         rx|j                  d   }|j                  d   }|j                  d   }|j                  d   }t        ||      }|j                          |j                  j                  |       |j                  j                  |       |r%|D ]   }	t        |	||	      }
|
j                          " |j                  j                         D cg c]  }|j                    }}t#        j$                  | j&                  j(                  |d
dddddt+        d      	       t-        | d||d      }t/        j0                  | t3        d             t5        |j6                  j9                  d      dz         S t-        | d||d      S c c}w )z
    function used to create onboarding task.

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return onboarding task creation form template
    POST : return onboarding view
    r   rB   initialrA   
candidatesmanagers
task_title)r   r   candidate_idr   onboarding_task_id,You are chosen as an onboarding task manager>   لقد تم اختيارك كمدير مهام التدريب.6   Sie wurden als Onboarding-Aufgabenmanager ausgewählt.D   Ha sido seleccionado/a como responsable de tareas de incorporación.M   Vous avez été choisi(e) en tant que responsable des tâches d'intégration.rc   rd   re   zonboarding/task_form.html)rI   r   z New task created successfully...rm   rn   )GETrL   r7   rK   r2   rJ   rA   rM   cleaned_datar8   rN   rD   rO   r   r5   rr   rs   r'   rt   ru   rv   r   r   r   rp   rq   r   rw   rx   )rT   r   rz   rI   	form_datar   r   titleonboarding_taskcandtaskmanagerr|   r}   s                 rX   task_creationr      s    {{z*H##''8'4E!:u*=>D~~*7<<*eATU	"//=J --j9H --j9H**<8E,QO  "''++H5&&**:6&  D(%)!)+:D
 IIK   /::>>@ ((E  KK))CXP^g$ !23
 +84H
 Wa(J&KL  ''03XX  ,t.R 3s   Hz onboarding.change_onboardingtaskc                 
   t         j                  j                  |      }| j                  dk(  rt	        | j
                  |      }|j                         r|j                         }|j                  j                  t        j                  j                  |j                  j                  d                   |j                  j                         D ]J  }|j                   |j"                  j                         vr|j%                          :|j&                  |_        L t)        j*                  | t-        d             |j                  j                         D cg c]  }|j.                   }}t1        j2                  | j4                  j6                  |ddd	d
ddt9        d      	       t;        | d||d      }t=        |j>                  jA                  d      dz         S t	        |      }t;        | d||d      S c c}w )z
    function used to update onboarding task.

    Parameters:
    request (HttpRequest): The HTTP request object.
    task_id : task id

    Returns:
    GET : return onboarding task update form template
    POST : return onboarding view
    rB   rA   r   rD   rE   zTask updated successfully..r   r   r   r   r   rc   rd   re   zonboarding/task_update.html)rI   task_idrm   rn   )!r8   rK   rL   rJ   r0   rA   rM   rN   rD   rO   r   rP   rQ   rR   candidatetask_setrr   r   r   r   r   r   rp   rq   rs   r'   rt   ru   rv   r   r   r   rw   rx   )	rT   r   r   rI   r   	cand_taskr{   r|   r}   s	            rX   task_updater   &  s   $ %,,00G0<O~~!',,I==?99;D    ''tyy/@/@/O'P ->>BBD 7	))1D1D1FF$$&)-I&	7
 Wa(E&FG?C?O?O?S?S?UV8X..VEVKK))CXP^g$ !23
 - &H    ''03XX  7D%	
 1 Ws   H z onboarding.delete_onboardingtaskc                    	 t         j                  j                  |      j                          t	        j
                  | t        d             t        t              S # t         j                  $ r0 t	        j                  | t        d             Y t        t              S t        $ r0 t	        j                  | t        d             Y t        t              S w xY w)z
    function used to delete onboarding task.

    Parameters:
    request (HttpRequest): The HTTP request object.
    task_id : task id


    Returns:
    GET : return onboarding view
    rB   z The task deleted successfully...zTask not found.zKYou cannot delete this task because some candidates are associated with it.)r8   rK   rL   r   r   rp   rq   r   r   r   r   onboarding_view)rT   r   s     rX   task_deleter   h  s    
""g".557!$F"GH O$$ && 6w"3 45 O$$  
]	
 O$$
s   AA 2C 'CCzrecruitment.add_candidatec                 \   t               }| j                  dk(  rt        | j                  | j                        }|j	                         rU|j                         }d|_        |j                          t        j                  | t        d             t        t              S t        | dd|i      S )z
    function used to create hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return candidate creation form template
    POST : return candidate view
    rA   Tz$New candidate created successfully..z"onboarding/candidate_creation.htmlrI   )r/   rJ   rA   FILESrM   rN   hiredr   rp   rq   r   candidates_viewr   )rT   rI   	candidates      rX   candidate_creationr     s     #$D~~&w||W]]C==?		I"IONNWa(N&OPO,,'?&$PPrZ   zrecruitment.change_candidatec                 v   t         j                  j                  |      }t        |      }| j                  dk(  rpt        | j
                  | j                  |      }|j                         r>|j                          t        j                  | t        d             t        t              S t        | dd|i      S )z
    function used to update hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.
    obj_id : recruitment id

    Returns:
    GET : return candidate update form template
    POST : return candidate view
    rB   r   rA   z*Candidate detail is updated successfully..z onboarding/candidate_update.htmlrI   )r=   rK   rL   r/   rJ   rA   r   rM   rN   r   rp   rq   r   r   r   )rT   rU   r   rI   s       rX   candidate_updater     s     !!%%%0I"I6D~~&w||W]]YW==?IIKWa(T&UVO,,'=~NNrZ   zrecruitment.delete_candidatec           	         	 t         j                  j                  |      j                          t	        j
                  | t        d             t%        t&              S # t         j                  $ r0 t	        j                  | t        d             Y t%        t&              S t        $ r}t               }|j                  D ]0  }|j                  t        |j                  j                               2 dj!                  |      }t	        j                  | t        dj#                  |                   Y d}~t%        t&              S d}~ww xY w)z
    function used to delete hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.
    obj_id : recruitment id

    Returns:
    GET : return candidate view
    rB   z Candidate deleted successfully..zCandidate not found., zEYou cannot delete this candidate. The candidate is included in the {}N)r=   rK   rL   r   r   rp   rq   r   r   r   rO   protected_objectsadd___metaverbose_namejoinformatr   r   )rT   rU   emodels_verbose_name_setsobjmodels_verbose_name_strs         rX   candidate_deleter     s   
(//1!$F"GH  O$$ !! ;w"8 9: O$$  
#&5 && 	EC$((CII,B,B)CD	E#'++.F"GW^^+	
 	
 O$$
s   AA 2E E(BEEonboarding.view_candidatestagec                    t         j                  j                  |      }t        j                  j	                  |      j                         s	 t        j                  j	                  |j                        j                  d      d   }t        ||      j                          t        j                  j	                  |j                        x}rR|D ]M  }t        j                  j	                  ||	      j                         r3t        ||	      j                          O |j                  }t        j                   }|||d
d}	| j"                  j                  d      }
|
r3t%        j&                  |
      }t)        ||      \  }}|
|	d<   ||	d<   ||	d<   t+        | d|	      S # t        $ r2 t        j                  | t        d      d|j                  iz         Y 8w xY w)zA
    Candidate individual view for the onboarding candidates
    rB   r   )ro   sequencer   )r   onboarding_stage_idz%(recruitment)s has no stage..rV   r   r   T)rV   choicesr   single_viewrequests_idspreviousnextzonboarding/single_view.html)r=   rK   rL   r4   rP   existsr7   ro   order_byrN   	Exceptionr   r   rq   r8   r5   choicer   jsonloadsr   r   )rT   rC   kwargsr   r   tasksr   rV   r   contextrequests_ids_jsonr   previous_idnext_ids                 rX   candidates_single_viewr     s    !!%%%,I!!((i(@GGI	.66==(77  >  hz"1 & &<Ldf #**11$33 2 
 
5 
  $,,33!*t 4 &( "%.4df **K""G"	G  7zz"34.|R@W"3)
!% C  	NN23 )":":;<	s   AF% %7G G c                 P    t        | t                     }|j                  |      } | S )z-
    function used to paginate query set
    )r
   r   get_page)qrysetpage_number	paginators      rX   paginator_qryr     s(     &."23I,FMrZ   zcandidate.view_candidatec                    t         j                  j                  ddd      }t        | j                  |      }| j                  j                         }| j                  j                  d      }t        |j                  |      }t        j                  j                         }t        |      }t        t         |       t        | d||j                  |t        j                   |||d      S )z
    function used to view hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return candidate view  template
    TF	is_activer   recruitment_id__closedpagezonboarding/candidates_view.html)r   rI   pd	gp_fieldsmail_templateshired_candidatesfilter_dict)r=   rK   rP   r9   r   	urlencoderL   r   qsr   rr   r   r   r   rI   r:   fields)rT   querysetcandidate_filter_objprevious_datar   page_objr   	data_dicts           rX   r   r     s       ''$ ( H
 +7;;AKK))+M++//&)K144kBH(00446N'Ii+)"(--)00, ($	
 rZ   zrecruitment.view_candidate)permc           
      z   | j                   j                         }t        j                  j	                  dd      }| j                   j                  d      |j	                  d      }t        | j                   |      j                  }t        | dt        || j                   j                  d            |d	      S )
NTF)r   r   r   r   r   zcandidate/candidate_card.htmlr   )rQ   r   )
r   r   r=   rK   rP   rL   r9   r   r   r   )rT   r   r   s      rX   hired_candidate_viewr   B  s     KK))+M""))$ * J {{{#+&&&6
 zBEEJ'!*gkkoof.EF	
 rZ   c                    t         j                  j                  ddd      }t        | j                  |      j
                  }| j                  j                         }| j                  j                  d      }t        |      }t        t         |       t        | |d      }| j                  j                  d      }d}|dk7  r+|)d	}t        ||| j                  j                  d      d      }t        ||      }t        | ||||d
      S )z
    function used to filter hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return candidate view template
    TFr   r   orderbyfieldzonboarding/candidates.html zonboarding/group_by.html)r   r   r   )r=   rK   rP   r9   r   r   r   rL   r   r   r   general_group_byr   r   )	rT   r   r   r   r   r   r   r   r   s	            rX   candidate_filterr   W  s       ''$ ( H
 !h7::JKK))+M++//&)K'Ii+Y7JKKOOG$E+H{u(-%w{{v6

 Z5H}YO rZ   zrecruitment.view_recruitmentc                 B   | j                         }| j                         rdnd}| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }t               }|s!t        j                  | d       t        d      S t        t        j                  j                  |      j                  d	d
            }g }|D ]H  }	|j                  |	j                  |	j!                         |	j"                  f       |	j%                          J |D ]j  }
t        t'        |      t'        g       z        }t(        j                  j+                  |
      }|j,                  r#t        j                  | t/        | d             s|D ]  }t1        j2                  |      }t1        j4                  || j6                  j8                  d      }|j;                  |      }|j                  dt=        |i dd      j>                  df        tA        jB                  d      }tD        j                  j                  |      }|jG                         r=|jI                         }||_%        d|_&        d|_'        d|_(        |jS                          ntE        ||      jS                          tU        d| d| d| |||d      }tW        d|j                   d||jX                  g      }d|_-        ||_.        	 |j_                          t        j`                  | d        d
|_4        |jS                          	 tk               }|jl                  jn                  jI                         |_8        ||_9        |jS                          m t        d      S # tb        $ rB}te        jf                  |       t        jf                  | d!|j                          Y d}~d}~ww xY w# tb        $ r }te        jf                  |       Y d}~d}~ww xY w)"z
    function used to send onboarding portal for hired candidates .

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return json response
    httpshttpidsother_attachmentstemplate_attachment_idszPlease choose candidates)<script>window.location.reload()</script>rE   bodyTflatrB   z( has already been converted to employee.)r   selfDocumentF)pathr   zapplication/pdf   r   r   N)r   tokenz&onboarding/mail_templates/default.htmlz://z/onboarding/user-creation/)portalr   hostprotocolzHello z$, Congratulations on your selection!)subjectr  tohtmlz!Portal link sent to the candidatezMail not send to ):get_host	is_securerA   rR   r   r   r   infor   listr   rK   rP   values_listappendnamereadcontent_typecloserO   r=   rL   converted_employee_idrq   r   TemplateContextru   rv   r   r   rw   secrets	token_hexr6   r   firstr
  usedcountprofilerN   r   r   emailcontent_subtypeattachmentsrt   rp   r   r#   r   start_onboardr4   ro   r   r   r   )rT   r  r  r   r   r  email_backendbodysattachments_otherfilecand_idr&  r   r  template_bdyr   
render_bdyr
  existing_portal
new_portalhtml_messager$  r   onboarding_candidates                           rX   
email_sendr3  ~  s    D!++-w6H%%e,J--.AB%ll223LM*,Mg9:GHH##**2I*JVV 	W 	
E !   $))TYY[$:K:K!LM

  B301CG;<%%))W)5	**MMi[(PQR  	D#,,T2L&&&0I0IJG &,,W5J Re:NVV%	 !!"%*2299y9Q!!#(..0J$J#JO J!%JOO)5AFFH'4%Jc$/I%Q%$	
 Y^^,,PQ 

 !''	JJJLW&IJ #'		#1#3 ((99??A !4 1: - %%'ABH CDD  	JLLONN7&7	7G$HII	J  	LLOO	s1   &N'A
O5'	O208O--O25	P>PPc           	         g }|D ]  }g }t        | j                  |j                  j                               j                  j                  d      }g }|g d}|D ]   }|j                  |g d       t        | j                  |j                  j                  d            j                  j                  d      }	d|j                  z   t        |j                        z   }
t        |	d| j                  j                  |
      |
      j                  }|d	   |z   |d	<   ||j                  j                         D cg c]  }|j                   j                   c}z   } g }|d	   }|D ]>  }d
}|D ]  }|d   |k(  s|j                  |       d} n |r,|j                  d|i       @ |||d}|j                  |        |S c c}w )zE
    This method is used to make group of the onboarding records
    r   r   )rV   stages)grouperr  T)candidate_id__is_activer   r   r5  Fr6  )rV   r5  employee_ids)r,   r   r   rr   r   r   r  r+   r   rP   stage_titlestrrC   r&   rL   object_listr   )rT   r   groupsrec	employeesr5  all_stages_grouperrQ   rz   stage_candidates	page_namer6  r{   ordered_datagroupersfounds                   rX   onboarding_query_grouperrE    s    F ,	&KK#"6"6":":"<

"XXj! 	  "b1 	E%%%&DE8&&,0 '  
 b*%  !2!22S[@I' %	*	
 k  "(^g5DN!9>9L9L9N%-5%%((% I#	( > 	8EE# 9%. ''0 E	
 ##Y$67	8 "%

 	dY,Z M+%s   ;G
c                 V   t        | j                        }|j                  }| j                  j	                  d      sP|j                  d| j                  j                  g      |j                  | j                  j                  g      z  }| j                  j                  j                  j                         }|D ]e  }|j                  s|j                  j                  |vs)||j                  j                  |j                  j                  j                        z  }g |j                  d      j                         }| j                  j                  d      }|s|j                  d	      }t        j                  j                         }t         j"                  }| j                  j%                         }t'        |j)                  d
      d      }	| j                  j                  d      }
|	j+                  |
      }t-        | |      }|D ](  }t/        |d   d|d          t/        |d   d|d          * t1        | j                  j%                               }|j3                         j5                         D ]  \  }}|d   dk(  s|dk(  s||=  t7        | d|||||||d      S )z
    function used to view onboarding main view.

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return onboarding view template
    r   Tr   recruitment_managers__in!onboarding_stage__employee_id__inrB   r   closedFrK  rC      r   rV   r5  r8  r   unknownviewzonboarding/onboarding_view.html)recruitmentsrec_filter_objonboarding_stagesr   r   statusr   )r;   r   r   ru   has_permrP   rv   r   rr   r   ro   rC   distinctrL   r7   rK   r5   r   r   r
   r   r   rE  setattrr   copyitemsr   )rT   
filter_objrP  employee_tasksr   rS  rR  r   r   r   r   r   r<  itemr   keyvals                    rX   r   r     sw    #7;;/J==L<<  !AB#**gll6O6O5P + 
/6||/H/H.I   


 \\..>>BBDN ==T]]99M'*--*>*>==//22 +? + L
  &&&6??AL[[__X&F#**%*8'//335""GKK))+M,//5q9I++//&)K!!+.H%gx8F K]#XtH~>]#^T.5IJK 7;;0023K$$&,,. !Sq6Y#-C ! )$(!2&	
 rZ   c                 Z   t        | j                        }|j                  }| j                  j	                  d      sP|j                  d| j                  j                  g      |j                  | j                  j                  g      z  }| j                  j                  j                  j                         }|D ]e  }|j                  s|j                  j                  |vs)||j                  j                  |j                  j                  j                        z  }g |j                  d      j                         }| j                  j                  d      }|s|j                  d	      }t        j                  j                         }t         j"                  }t%               }| j                  j'                         }	t        | j                  |
      }t)        |d      }
| j                  j                  d      }|
j+                  |      }t-        | |      }|D ]  }t/        |d   d|d           t1        | j                  j'                               }|j3                         j5                         D ]  \  }}|d   dk(  s|dk(  s||=  t7        | d|||||||||	dd
      S )Nr   TrG  rI  rB   r   rK  FrL  r   rM  r   rV   r5  r   rN  rO  zonboarding/kanban/kanban.html)
rP  rQ  rR  r   r   
stage_formrS  r   r   card)r;   r   r   ru   rT  rP   rv   r   rr   r   ro   rC   rU  rL   r7   rK   r5   r   r1   r   r
   r   rE  rV  r   rW  rX  r   )rT   rY  rP  rZ  r   rS  rR  r   r_  r   r   r   r   r<  r[  r   r\  r]  s                     rX   kanban_viewra  W  ss    #7;;/J==L<<  !AB#**gll6O6O5P + 
/6||/H/H.I   


 \\..>>BBDN ==T]]99M'*--*>*>==//22 +? + L
  &&&6??AL[[__X&F#**%*8'//335""G(*JKK))+M"7;;FJ,*I++//&)K!!+.H%gx8F ?]#XtH~>?7;;0023K$$&,,. !Sq6Y#-C ! '$(!2&$	
 rZ   c                    	 t         j                  j                  |      }|r|j                  du rt	        | d      S |j
                  dk(  rt        d|      S |j                  }t        j                  j                  |j                        j                         }t        |      }	 | j                  dk(  r5t        | j                  |      }|j                         rt!        ||| |      S t	        | d
||j                  j*                  j,                  d      S # t"        $ r" t%        j&                  | t)        d	             Y Xw xY w# t"        $ r}t/        |      cY d}~S d}~ww xY w)a  
    function used to create user account in onboarding portal.

    Parameters:
    request (HttpRequest): The HTTP request object.
    token : random generated onboarding portal token

    Returns:
    GET : return user creation form template
    POST : return user_save function
    r
  T404.html   employee-bank-detailsusernamer   rA   z#User with email-id already exists..zonboarding/user_creation.htmlrI   companyN)r6   rK   rL   r!  r   r"  r   r   r   rP   r$  r   r3   rJ   rA   rM   	user_saver   r   r   rq   ro   
company_idr   )rT   r
  onboarding_portalr   ru   rI   r   s          rX   user_creationrn    sF   #,4488u8E $5$:$:d$B':..""a'3U;;%22	||""IOO"<BBD.	N~~''tD==?$T+<guMM +,99HHSS
 	
  	NNN7A&K$LM	N  #E""#sN   ;E
 E
 AE
 *AD .-E
 (EE
 EE
 
	E(
E#E(#E(c                    | j                  d      }|j                  j                  |_        |j                  j
                  }|t        |<   d|_        |j                          t        j                  |t        d             t        d|      S )z
    function used to save user.

    Parameters:
    request (HttpRequest): The HTTP request object.
    onboarding_portal : onboarding portal object
    token : random generated onboarding portal token

    Returns:
    GET : return profile view
    Fr\      zAccount created successfully..zprofile-view)rN   r   r$  rh  sessionsession_keyportal_userr"  r   rp   rq   r   )rI   rm  rT   r
  ru   rr  s         rX   rk  rk    sx     99E9"D%2288DM//--K#KWa @ABNE**rZ   c           	         t         j                  j                  |      j                         }|t	        | d      S |j
                  }| j                  dk(  ra| j                  j                  d      }|D||_	        ||_	        d|_
        |j                          t        j                  | t        d             t	        | d||j                  ||j                  j                   d      S )	a  
    function used to view user profile.

    Parameters:
    request (HttpRequest): The HTTP request object.
    token : random generated onboarding portal token

    Returns:
    GET : return user profile template
    POST : update profile image of the user
    rc  rd  rA   r#     z&Profile picture updated successfully..zonboarding/profile_view.html)r   r#  r
  rj  )r6   rK   rP   r   r   r   rJ   r   rL   r#  r"  rN   r   rp   rq   ro   rl  )rT   r
  rm  r   r#  s        rX   profile_viewrv    s     )0077e7DJJL gz**!..I~~--##I. 'I(/%&'#""$Wa(P&QR&"(00 //::		
	 	rZ   c                 "   t         j                  j                  |      j                         }|t	        | d      S |j
                  }|j                  |j                  |j                  |j                  d}| j                  j                  }t        |   }t        j                  j                  |      j                         r*t        j                   | t#        d             t%        d      S t        j                  j                  |      j                         t        j                  j                  |      j                         }|j&                  r*t        j                   | t#        d             t%        d      S t        j                  j                  |      j                         j(                  }t+        |	      }| j,                  d
k(  rt        j                  j                  |      j                         }	t+        | j.                  |	      }|j1                         rB|j3                          t5        | |       |j3                  d      }
||
_        |j8                  |
_        |j:                  |
_        d|
_        |
j3                          |j
                  j@                  }tB        j                  j                  |
      j                         }|r|n	tC               }|
|_"        ||_         |jF                  |_$        |j8                  |_        |j3                          d|_%        |j3                          t        j                   | t#        d             t%        d|      S t	        | d||jL                  jN                  d      S )a#  
    function used to create employee.

    Parameters:
    request (HttpRequest): The HTTP request object.
    token : random generated onboarding portal token.

    Returns:
    GET : return employee creation profile template.
    POST : return employee bank detail creation template.
    rc  rd  )employee_first_namephoneaddressdob)r$  z&Employee with email id already exists.r   rs   zEmployee already exists..r   rA   r   Fr\   TrD   re  z0Employee personal details created successfully..rf  z!onboarding/employee_creation.html)rI   r{   )(r6   rK   rP   r   r   r   r  mobilerz  r{  rq  rr  rs  r   r   r   rp   rq   r   employee_bank_details__dict__r.   rJ   rA   rM   rN   r   rs   r$  r#  employee_profileis_from_onboardingjob_position_idr    rD   joining_datedate_joiningr"  ro   rl  )rT   r
  rm  r   r   rr  ru   r{   rI   r   employee_personal_infojob_positionexisting_work_info	work_infos                 rX   employee_creationr    s     )0077e7DJJL gz**!..I(~~!!$$}}	G //--K{#DT*113!$L"MN  5;;=I##**D*AGGI))Wa(C&DEG$$""))4)@FFHQQD ~~##**D*AGGI#LL
 ==?IIK'4 %)YYeY%<"6:"3+4??"(6G6O6O"38<"5"''),99IIL!8!@!@!G!G2 "H "eg  '9">U>W  %;I!(4I%%.%;%;I"'ooIONN&'#""$MN 3U;;+9#;#;#F#FG rZ   c                    t         j                  j                  |      }t        j                  j	                  |j
                  j                        j                         }t        j                  j	                  |      j                         }t        j                  j	                  |      j                         }t        |      }| j                  dk(  rCt        | j                  |      }|j                         rt        || |      S t        t               S t#        | d||j
                  j$                  j&                  d      S )	a/  
    function used to create employee bank details creation.

    Parameters:
    request (HttpRequest): The HTTP request object.
    token : random generated onboarding portal token

    Returns:
    GET : return bank details creation template
    POST : return employee_bank_details_save function
    rc  rg  r|  r}  r   rA   z%onboarding/employee_bank_details.htmlri  )r6   rK   rL   r   rP   r   r$  r   r   r   r-   rJ   rA   rM   employee_bank_details_saver   welcome_aboardr   ro   rl  )rT   r
  rm  ru   r{   	bank_inforI   s          rX   r  r  J  s    )004454A<<(9(F(F(L(LMSSUD&&&=CCEH#++22x2HNNPI"I6D~~&LL
 ==?-dG=NOO''/(55DDOO	
 rZ   c                    | j                  d      }t        j                  j                  |j                        }||_        |j                  }||_        |j                          |j                          d|_        d|_	        |j                          t        j                  |t        d             t        t              S )z
    function used to save employee bank details.

    Parameters:
    request (HttpRequest): The HTTP request object.
    form : Form object.
    onboarding_portal : Onboarding portal object.

    Returns:
    GET : return welcome onboard view
    Fr\   r|  rM  Tz,Employee bank details created successfully..)rN   r   rK   rL   ru   rD   r   r  r"  r!  r   rp   rq   r   r  )rI   rT   rm  employee_bank_detailr{   r   s         rX   r  r  m  s      99E92##W\\#BH'/$!..I&.I#NN!Wa NOPN##rZ   c                     t        | d      S )z
    function used to view welcome aboard.

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return welcome onboard view
    zonboarding/welcome_aboard.html)r   )rT   s    rX   r  r    s     ';<<rZ   rA   zonboarding.change_candidatetaskc                    | j                   j                  d      }| j                   j                  d      r!t        j                  j                  |      }n| j                   j                  d      }t        j                  j                  |      }t
        j                  j                  |      }t        j                  j                  ||      j                         }||_        |j                          |j                  j                  j                         D cg c]  }|j                   }}t        j                  | j                   j"                  |d|j                   d|j$                   d|j                   d	d
|j                   d|j$                   d|j                   d	d|j                   d|j$                   d|j                   dd|j                   d|j$                   d|j                   d	d|j                   d|j$                   d|j                   d	dt'        d      	       t)        t+        d      dd      S c c}w )z
    function used to update candidate task.

    Parameters:
    request (HttpRequest): The HTTP request object.
    obj_id : candidate task id

    Returns:
    POST : return candidate task template
    rS  r   rB   candIdr   z	The task z of            z was updated to .u   تم تحديث المهمة u    للمرشح     إلى zDie Aufgabe z des Kandidaten  wurde auf  aktualisiert.z	La tarea z del candidato  se ha actualizado a u
   La tâche z du candidat     a été mise à jour à rc   rd   re   z!Candidate onboarding task updatedrp   messagetype)rA   rL   r5   rK   r8   r=   rP   r   rS  rN   r   rD   rr   rs   r'   rt   ru   rv   r   r   r   rq   )	rT   taskIdrS  candidate_taskcanIdr   r   r{   r|   s	            rX   candidate_task_updater    s    \\h'F||&&..22f2=  *(00444?%%))U)3	&..55" 6 

%' 	 #N '99EEIIK 	!!E  KK!!::; <(())9.:O:O9PPQS/0Q0Q/RR`aoa|a|`}  ~F  GU  G\  G\  F]  ]^  _~@@AAQR`RmRmQnny  {I  {P  {P  zQ  Q_  `N==>onNiNiMjj  AO  AV  AV  @W  WX  Y^>>?}^MhMhLi  jC  DR  DY  DY  CZ  Z[  \*+ 9:IN !s   Ic           
         | j                   j                  d      }| j                   j                  d      }t        j                  j                  |      }t        j                  j                  |      }t
        j                  j                  |      }t        j                  j                  ||      j                         }|j                  }t        | d|||dt        j                  d      S )z
    htmx function that return the status of candidate task

    Parameters:
    request (HttpRequest): The HTTP request object.
    task_id : Onboarding task id

    Returns:
    POST : return candidate task template
    r,  
cand_stagerB   r   onboarding/candidate_task.htmlTrS  r   r   second_loadr   )r   rL   r4   rK   r8   r=   r5   rP   r   rS  r   r   )	rT   r   r,  r  cand_stage_objr   r   r  rS  s	            rX   
get_statusr    s     kkooi(G.J#++//:/>N$,,00G0<O!!%%%1I"**11? 2 eg  ""F(#'$++	

 
rZ   c           
         | j                   j                  d      }| j                   j                  d      }| j                   j                  d      }t        j                  j                  |      }t        j                  j                  |      }t
        j                  j                  |      }t        j                  j                  |      }t        j                  j                  |||      \  }	}
|	j                          |j                  j                  |       t        | d|	j                  ||dt        j                  d      S )	z
    htmx function that used to assign a onboarding task to candidate

    Parameters:
    request (HttpRequest): The HTTP request object.
    task_id : Onboarding task id

    Returns:
    POST : return candidate task template
    r   r,  r  rB   r   r  Tr  )r   rL   r4   rK   r8   r=   r7   r5   get_or_createrN   r   r   r   rS  r   )rT   r   r   r,  r  r  r   r   r   r   createds              rX   assign_taskr    s    {{z*Hkkooi(G.J#++//:/>N$,,00G0<O!!%%%1I&..22h2?&..<<!* = Iw
 NN""9-(&&#'$++	

 
rZ   z onboarding.change_candidatestagec                    | j                   j                  d      }t        j                  j	                  |      }t
        j                  j                  |      }t        j                  j                  |      }t        j                  j                  |      }||_        |j                          t
        j                  j                         }t        j                  }	|j                  j                  j                         D 
cg c]  }
|
j                   }}
| j                   j                  d      t        j                   | j"                  j$                  |d|j&                   d|j                   dd|j&                   d	|j                   dd
|j&                   d|j                   dd|j&                   d|j                   dd|j&                   d|j                   ddt)        d      	       t+        | |      }|D ]-  }t-        |d   d|d          t/        | d|d   d   ||	d      c S  t1        t3        d      dd      S c c}
w )z
    function used to update candidate stage.

    Parameters:
    request (HttpRequest): The HTTP request object.
    candidate_id : Candidate id
    recruitment_id : Recruitment id

    Returns:
    POST : return candidate task template
    rz   rB   r   is_ajaxzThe stage of z                  was updated to r  u(   تم تحديث مرحلة المرشح r  zDie Phase des Kandidaten r  r  zLa etapa del candidato r  u   L'étape du candidat r  rc   rd   re   rV   r5   onboarding/onboarding_table.htmlr   rV   rR  r   "Candidate onboarding stage updatedrp   r  )rA   rL   r>   rK   rP   r7   r=   r4   r   rN   rr   r5   r   rD   rs   r'   rt   ru   rv   r   r   rE  rV  r   r   rq   )rT   r   ro   r   rP  rz   r   candidate_stagerR  r   r{   r|   r<  r[  s                 rX   candidate_stage_updater    s    ||(H&&---@L##''8'4E!!%%%6I$,,00i0HO*/O''//335""G (;;GGKKM 	!!E  ||	"*LL%% !=!= > ?  / C CDAG>?[?[>\\det  fI  fI  eJ  JK  L/0L0L/M[YhY|Y|X}  ~L  M-o.J.J-KK`ap  bE  bE  aF  FG  H+O,H,H+IIbcr  dG  dG  cH  HI  J ./	
 &g|<F 

]#XtH~>.%ay7%6"
 	


 :;YO ;s   Ic                 ~   | j                   d   }| j                   d   }t        j                  |      }| j                   d   }t        j                  j                         }t        j                  j                  t        |            }t        j                  }t        j                  j                  |      j                  |       d}d}	|rd	}d
}	t        | |      }
|
D ]  }t        |d   d|d           t        | d|
d   d   ||d      }t!        |j"                  j%                  d      d| d|	 dz         S )Nr   rV   rz   rB   )candidate_id__id__in)r   r  zNo candidates selectedrp   z$Candidate stage updated successfullyr5  r  r   r  rm   zW<div><div class="oh-alert-container"><div class="oh-alert oh-alert--animated oh-alert--z">z</div> </div></div>)rA   r   r   r7   rK   rr   r>   rP   intr5   r   r4   updaterE  rV  r   r   rw   rx   )rT   candiate_idsrecrutment_idcandidate_id_listrz   rR  rP  r   r  r  r<  r[  r}   s                rX   candidate_stage_bulk_updater  I  s_    <<&LLL/M

<0LL!E'//335&&--]1C-DL""G!!7H!IPP! Q  D&G8%g|<F ?]#XtH~>?*!!9]3!2	
H (cdhciiklskt  uH  I	I rZ   c                    | j                   d   }t        j                  |      }| j                   d   }| j                   d   }t        j                  j                  ||      j                  |      }t        t        d      dd      S )	Nr   r   rS  )r  r   rS  r  rp   r  )	rA   r   r   r5   rK   rP   r  r   rq   )rT   r  r  r   rS  r"  s         rX   candidate_task_bulk_updater  q  s     <<&L

<0<<D\\(#F!!((.4 ) fFf 

 :;YO rZ   c           
      2   g }g }g }g }t         j                  j                  dd      }|D ]  }t        j                  dd      }t        j                  dd      }t        j                  dd      }	|j                  d| d| d|	 d       |j                  d	| d| d|	 d
       |j                  |j                         |j                  |j                  j                  d      j                                 t        ||||t        d      dd      S )z
    function used to show onboard started candidates in recruitments.

    Parameters:
    request (HttpRequest): The HTTP request object.

    Returns:
    GET : return Json response labels, data, background_color, border_color.
    FT)rK  r   r      rgba(r   z, 0.2rgb()r'  z#No records available at the moment.)labelsrQ   background_colorborder_colorr  safe)r>   rK   rP   randomrandintr  r   r   r"  r   rq   )
rT   r  rQ   r  r  rP  rV   redgreenblues
             rX   onboard_candidate_chartr    s$    FDL&&--Ud-KL# NnnQ$q#&~~a%%uBugRvU CDd3%r%4&:;k''(K))00t0DJJLMN  0(>?	
 	 	rZ   c                    | j                   d   }| j                   d   }t        j                  j                  |      }||_        |j                          t        dt        d      j                  |j                        d      S )z+
    Ajax method to update joinng date
    r  daterB   rp   z0{candidate}'s Date of joining updated sussefully)r   r  r  )
rA   r=   rK   rL   r  rN   r   rq   r   r  )rT   r,  r  candidate_objs       rX   update_joiningr    s     ll8$G<<D%%))W)5M!%MKLSS',, T 	
 rZ   c           	         t         j                  j                         j                  dd      }t        j                  j                         }|j                  d      }t        j                  j                  d      }|j                  dd      }t        |      |||t        t        |            d}t        | d|      S )	Nr   Tr  r  job_position_id__job_position)rV   r   r   onboard_candidatesjob_positionszonboarding/dashboard.html)r   )	r>   rK   rr   r  r=   rP   r  rO   r   )rT   rV   r   r   r  r  r   s          rX   view_dashboardr    s     %%))+77d7KK""&&(JD1E"**111E&22'd 3 M
 K( 0c-01G '6HHrZ   c           
      t   | j                   j                  d      }t        j                  j	                  |      j                  dd      }t        |      }g }g }g }|D ]  }t        j                  dd      }t        j                  dd      }t        j                  dd      }	|j                  d| d	| d	|	 d
       |j                  d| d	| d	|	 d       t        j                  j	                  ||      j                         }
|j                  |
        |||||t        d      d}t        |      S )NrV   )recruitment_id__titler9  Tr  r   r  r  r   z, 0.3r  r  ) onboarding_stage_id__stage_title*onboarding_stage_id__recruitment_id__titlez$No candidates started onboarding....)r  rQ   rV   r  r  r  )r   rL   r7   rK   rP   r  r  r  r  r  r4   r"  rq   r   )rT   rV   r  candidate_countsr  r  labelr  r  r  r"  r}   s               rX   dashboard_stage_chartr    sQ    ++//-0K$$++) , k-dk+  &\FL 
'nnQ$q#&~~a%%uBugRvU CDd3%r%4&:;&&---27B . 
 %' 	 	&
'  ",$;<H !!rZ   c                 X   t        j                  | j                  d         }d}|j                         D ]N  \  }}t        j
                  j                  |      }|j                  |k7  s6||_        |j                          d}P |rt        t        d      dd      S t        dd	i      S )
zA
    This method is used to update the sequence of candidate
    sequenceDataFrB   TzCandidate sequence updatedr  r  r  fail)r   r   rA   rX  r4   rK   rL   r   rN   r   rq   )rT   sequence_dataupdatedr,  seqr   s         rX   candidate_sequence_updater    s     JJw||N;<MG%++- %%))W)5==CDMIIKG 67H
 	
 ())rZ   zrecruitment.change_stagec                 X   t        j                  | j                  d         }d}|j                         D ]N  \  }}t        j
                  j                  |      }|j                  |k7  s6||_        |j                          d}P |rt        dt        d      d      S t        dd	i      S )
zB
    This method is used to update the sequence of the stages
    r  FrB   Trp   zStage sequence updatedr  r  r  )r   r   rA   rX  r7   rK   rL   r   rN   r   rq   )rT   r  r  r   r  rz   s         rX   stage_sequence_updater  	  s     JJw||N;<MG&,,. #''++x+8>>S  ENJJLG Y1=U;VWXX())rZ   c                     t         j                  j                  |      }| j                  d   |_        |j                          t        d      }t        d| d      S )zE
    This method is used to update the name of recruitment stage
    rB   rz   z-The stage title has been updated successfullyz[<div class="oh-alert-container"><div class="oh-alert oh-alert--animated oh-alert--success">z</div></div>)r7   rK   rL   rA   r9  rN   rq   r   )rT   r   rW   r  s       rX   stage_name_updater    s_      ''++x+8I#LL1INN?@G
efmennz{ rZ   c                 ,   t         j                  j                  |      }|j                  }t	        | dd|i      }t               }|j                  }| rI	 | j                  j                  j                          d| j                  j                  j                   d}| j                  dk(  r| j                  d   }| j                  d   }t        j                   t              5  t#        ||||gd	
      }	|	dk(  r t%        j&                  | t)        d             nt%        j                  | t)        d             ddd       t+        |j,                  j/                  d      dz         S |S #  t        j                  t               Y xY w# 1 sw Y   RxY w)zP
    This method is used to send mail to the candidate from onboarding view
    rB   zonboarding/send_mail_form.htmlr   z <>rA   r  r  F)fail_silentlyrp  zMail sent successfullyzSomething went wrongNrm   rn   )r=   rK   rL   r$  r   r   $dynamic_from_email_with_display_nameru   rv   get_full_namer#   r   r   rJ   rA   
contextlibsuppressr	   r   rp   rq   r   rw   rx   )
rT   r   r   candidate_mailr}   r(  display_email_namer  r  ress
             rX   onboarding_send_mailr  .  sz    !!%%%6I__N1K3KH +,M&KK	$$+LL$=$=$K$K$M#NbQXQ]Q]QjQjQpQpPqqr!s ~~,,y)||F#  + 	C" #C ax  !,D*EFw*@(AB	C ##G,/TT
 	
 O-	$LL#
	C 	Cs   AE* #AF
*F
Fc                     | j                   j                  d      }| j                   d   }t        j                  j	                  |      j                  |       t        ddd      S )z>
    This method is used to update the probotion end date
    r   probation_endrE   )r  zProbation end date updatedrp   r  )r   rR   r=   rK   rP   r  r   )rT   r   r  s      rX   update_probation_endr  X  s\     ;;&&~6LKK0ML188}8U$@)TUUrZ   c                    | j                   j                  d      }|s | j                  j                  j                  }t
        j                  j                  |dd      j                         }g }|D ]  }|j                  ||j                  j                         |j                  j                  d      j                         |j                  j                  d      j                         |j                  j                  d      j                         |j                  j                  d	      j                         |j                  j                  d
      j                         d        t        | dd|i      S )z6
    This method is used to show the task report.
    rD   TF)employee_id__idcandidates__is_active"candidates__recruitment_id__closedtodor  	scheduledongoingstuckdone)r   total_candidatesr  r  r  r   r  z%onboarding/dashboard/task_report.htmlr   )r   rL   ru   rv   rC   r8   rK   rP   rU  r  r   r"  r   )rT   rD   my_tasksr   r   s        rX   task_reportr  d  sQ    ++//-0Kll//22%%,,#"+0 -  hj	 
 E 
$($:$:$@$@$B..55V5DJJL!33::+:NTTV1188	8JPPR//66g6FLLN..55V5DJJL
	

 'BWeDTUUrZ   zonboarding.view_candidatetaskc                 ~    | j                   d   }t        j                  j                  |      }t	        | dd|i      S )zM
    This method is used to render template to show the onboarding tasks
    r   )onboarding_task_id__idz%onboarding/dashboard/status_list.htmlcandidate_tasks)r   r5   rK   rP   r   )rT   r   r  s      rX   candidate_tasks_statusr    sF     kk)$G#++22'2RO/	O, rZ   c                     | j                   d   }t        j                  j                  |      }| j                   d   }|dv r||_        |j                          t        d      S )z5
    This method is to update the candidate task
    r   rB   rS  )r  r  r  r   r  Success)r   r5   rK   rL   rS  rN   r   )rT   r   r  rS  s       rX   change_task_statusr    sg     kk)$G"**..'.:N[["F   !'	""rZ   zrecruitment.change_recruitmentc                     | j                   d   }| j                   d   }t        j                  j                  |      }|dv r||_        |j                          t        d      S )z?
    This method is used to update the offer letter status
    r   rS  rB   )not_sentsentacceptedrejectedjoinedr
  )r   r=   rK   rL   offer_letter_statusrN   r   )rT   r   rS  r   s       rX   update_offer_letter_statusr    s_     ;;~.L[["F!!%%%6IGG(.	%	""rZ   z!recruitment.add_rejectedcandidatec                    | j                   j                  d      }d}|r.t        j                  j	                  |      j                         }t        d|i|      }| j                  dk(  rbt        | j                  |      }|j                         r;|j                          t               }t        j                  | d       t        d      S t        | d	d
|i      S )zF
    This method is used to add candidates to rejected candidates
    r   Nr   )r   r   rA   r   zCandidate reject reason savedr  zonboarding/rejection/form.htmlrI   )r   rL   r?   rK   rP   r   r<   rJ   rA   rM   rN   r   rp   r   r   )rT   r   r   rI   s       rX   add_to_rejected_candidatesr    s     ;;??>2LH$,,333NTTV .D ~~$W\\HE==?IIK(*DW&EF KLL';fd^LLrZ   c                    | j                   j                  d      }t        j                  j	                  ddd      x}}|D cg c]  }t        |j                         }}|j                         }||d}t        |d      S c c}w )z9
    This method is used for select all in candidate
    r   TFr   r   r   r8  total_countr  )	r   rL   r=   rK   rP   r:  rC   r"  r   )rT   r   r>  r   empr8  r  r   s           rX   candidate_selectr    s    
 ++//&)K$,,33$ 4  I ,55CCK5L5//#K+KHGe,, 6s   Bc                    | j                   j                  d      }| j                   j                  d      }|rt        j                  |      ni }|dk(  r{t	        |t
        j                  j                  ddd            }|j                  }|D cg c]  }t        |j                         }}|j                         }||d}	t        |	      S y	c c}w )
z?
    This method is used to select all filtered candidates
    r   rP   rr   TFr  r   r  N)r   rL   r   r   r9   r=   rK   rP   r   r:  rC   r"  r   )
rT   r   filteredfiltersr   filtered_candidatesr  r8  r  r   s
             rX   candidate_select_filterr     s     ++//&)K{{x(H&.djj"BGe*&&--', . 
 /11/BCCFFCC)//1#/LG$$%  Ds   Cc                 ,   t        j                  | j                  j                  dg             }| j                  j                  d      }|D ]  }	 t        j
                  j                  t        |            j                         }|j                  |k7  r.||_	        |j                          t        j                  | d       n%t        j                  | dj                  |              t        dd	      S #  t        j                  | d       Y xY w)
zE
    This function is used to bulk update the offerletter status
    r   rS  rB   z(offer letter status updated successfullyzStatus already in {} statusCandidate doesnot existrp   Fr  )r   r   r   rL   r=   rK   rP   r  r   r  rN   r   rp   r   r   r   rT   r   rS  rC   r   s        rX   offer_letter_bulk_status_updater$    s     **W[[__UB/
0C[[__X&F 
?		?!))00CG0<BBDI,,606	-   *TUw(E(L(LV(TU
? 	..	?NN7$=>s   BC99Dc                    t        j                  | j                  j                  dg             }| j                  j                  d      }|D ]`  }	 t        j
                  j                  t        |            j                         }|j                          t        j                  | d       b t        dd      S #  t        j                  | d       Y xY w)	zD
    This function is used to bulk delete onboarding candidates
    r   rS  rB   zcandidate deleted successfullyr"  rp   Fr  )r   r   r   rL   r=   rK   rP   r  r   r   r   rp   r   r   r#  s        rX    onboarding_candidate_bulk_deleter&    s    
 **W[[__UB/
0C[[__X&F ?	?!))00CG0<BBDIW&FG	? 	..	?NN7$=>s   AB==C)__doc__r  r   loggingr  r  urllib.parser   djangor   django.contribr   django.contrib.authr   django.contrib.auth.modelsr   django.core.mailr   r	   django.core.paginatorr
   django.db.modelsr   django.httpr   r   r   django.shortcutsr   r   django.template.loaderr   django.urlsr   django.utils.translationr   r   r   rq   django.views.decorators.httpr   base.backendsr   base.methodsr   r   r   r   r   base.modelsr   r   employee.modelsr   r   r    horillar!   horilla.decoratorsr"   r#   r$   r%   horilla.group_byr&   r   notifications.signalsr'   onboarding.decoratorsr(   r)   r*   onboarding.filtersr+   r,   onboarding.formsr-   r.   r/   r0   r1   r2   r3   onboarding.modelsr4   r5   r6   r7   r8   recruitment.filtersr9   r:   r;   recruitment.formsr<   recruitment.modelsr=   r>   r?   recruitment.pipeline_grouper	getLogger__name__rY   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r3  rE  r   ra  rs  rn  rk  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r&   rZ   rX   <module>rJ     s        !  # % + 4 + + H H - 3  2 6 = 0  9 R R   C ( 
 P    U T 3 H H :			8	$ ?@W A  W2!H BC/ D  /d 89BCG D : G, 89= :  =@ ;<< =  <~ 78;<% = 9 %6 01Q 2 Q. 34O 5 O. 34% 5 %@ 782 9  2j /0" 1 "J 67 8 & /0! 1  !H 56bE 7 bEJ2j 788 9 8v 78; 9 ;| %#P+,!HK\ F$4 
= 
= vh89) :   )X  D 89# : #L vh;<4 =   4n vh;<" =   "J vh89 :        F /0 1 & /0I 1 I& /0" 1 "@ 78* 9 *& 34* 5 *& vh
    
 78$ 9  $N 34V 5 V 9:V ;  V8 67
 8 
 89# : #& 56
# 7 
# 89M :  M* - -( 12% 3 %:/*/rZ   