
    vg                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZ  G d de      Z eee      d        Z G d de      Z G d de      Z G d de      Z G d de      Zy)zG
models.py

This module is used to register models for onboarding app

    )datetime)models)	post_save)receiver)gettext_lazy)HorillaCompanyManager)Employee)HorillaModel)HorillaAuditInfoHorillaAuditLog)	CandidateRecruitmentc                   "   e Zd ZdZ ej
                  d      Z ej                  e e	d      ddej                        Z ej                  ed	      Z ej                  d
      Z ej"                  d      Z ed      Zd Z G d d      Zy)OnboardingStagez 
    OnboardingStage models
       
max_lengthr   Tonboarding_stage)verbose_namenullrelated_name	on_deletezStage managers)r   )r   Fdefaultrecruitment_id__company_idc                     | j                    S N)stage_titleselfs    %/var/www/horilla/onboarding/models.py__str__zOnboardingStage.__str__(   s    ""#$    c                       e Zd ZdZdgZy)OnboardingStage.Meta3
        Meta class for additional options
        sequenceN)__name__
__module____qualname____doc__ordering r#   r!   Metar%   +   s    	 <r#   r.   N)r(   r)   r*   r+   r   	CharFieldr   
ForeignKeyr   _CASCADErecruitment_idManyToManyFieldr	   employee_idIntegerFieldr'   BooleanFieldis_final_stager   objectsr"   r.   r-   r#   r!   r   r      s     #&""c2K&V&&}%'..N )&((@PQK"v""-H(V((7N#$@AG%   r#   r   )senderc                     |s|j                   j                         s0t               }d|_        d|_        ||_        |j                          yy)zT
    This is post save method, used to create initial stage for the recruitment
    r   InitialN)r   firstr   r'   r   r3   save)r:   instancecreatedkwargsinitial_stages        r!   create_initial_stagerC   3   sI    
 h//557')!"$-!'/$ 8r#   c                       e Zd ZdZ ej
                  d      Z ej                  eddej                  d      Z
 ej                  edd      Z ej                  ed ed	      
      Z ed      Zd Zy)OnboardingTaskz
    OnboardingTask models
    r   r   Tonboarding_task)r   blankr   r   cand_onboarding_task)rG   r   zTask Managers)r   r   $stage_id__recruitment_id__company_idc                     | j                    S r   )
task_titler   s    r!   r"   zOnboardingTask.__str__Y   s    //"#r#   N)r(   r)   r*   r+   r   r/   rK   r0   r   r2   stage_idr4   r   
candidatesr	   r1   r5   r   r9   r"   r-   r#   r!   rE   rE   @   s     "!!S1J v  ..&H (''+J
 )&((0q?QK $$JKG$r#   rE   c                       e Zd ZdZ ej
                  eej                  d      Z ej                  e
ej                  d      Z ej                  dd      Z ej                  dd      Z ed	      Zd
 Z fdZd Z G d d      Z xZS )CandidateStagez
    CandidateStage model
    r   r   r   	candidateT)rG   r   r   )r   r   (candidate_id__recruitment_id__company_idc                 8    | j                    d| j                   S )Nz  |  )candidate_idonboarding_stage_idr   s    r!   r"   zCandidateStage.__str__l   s!    ##$E$*B*B)CDDr#   c                     | j                   j                  rt        j                         | _        t        t        |   |i | y r   )rU   r8   r   todayonboarding_end_datesuperrO   r>   )r    argsrA   	__class__s      r!   r>   zCandidateStage.saveo   s5    ##22'/~~'7D$nd($9&9r#   c                     | j                   j                  }|j                  d      }|j                          d|j                          S )zf
        function that used for getting the numbers between task completed v/s tasks assigned
        done)status/)rT   candidate_taskfiltercount)r    
cans_taskscompleted_taskss      r!   task_completion_ratioz$CandidateStage.task_completion_ratiot   sM     &&55
$++6+:!'')*!J,<,<,>+?@@r#   c                   &    e Zd ZdZ ed      ZdgZy)CandidateStage.Metar&   zCandidate Onboarding stager'   N)r(   r)   r*   r+   r1   r   r,   r-   r#   r!   r.   rg   |   s    	 56<r#   r.   )r(   r)   r*   r+   r   OneToOneFieldr   PROTECTrT   r0   r   rU   	DateFieldrX   r6   r'   r   r9   r"   r>   re   r.   __classcell__)r[   s   @r!   rO   rO   ]   s     (6''V^^:LL ,&++6>> +&**DA"v""a8H#$NOGE:
A   r#   rO   c                      e Zd ZdZd ed      fd ed      fd ed      fd ed	      fd
 ed      ffZ ej                  eej                  d      Z
 ej                  edej                  d      Z ej                  deddd      Z ej                  eej                        Z ed      Z edeg      Zd Z G d d      Zy)CandidateTaskz
    CandidateTask model
    todoTodo	scheduled	ScheduledongoingOngoingstuckStuckr]   Doner`   rP   T)r   r   r   2   )r   choicesrG   r   r   )r   rR   history_set)r   basesc                 8    | j                    d| j                   S )N|)rT   onboarding_task_idr   s    r!   r"   zCandidateTask.__str__   s!    ##$Ad&=&=%>??r#   c                        e Zd ZdZ ed      Zy)CandidateTask.Metaz;
        Meta class to add some additional options
        zCandidate onboarding taskN)r(   r)   r*   r+   r1   r   r-   r#   r!   r.   r      s    	 45r#   r.   N)r(   r)   r*   r+   r1   choicer   r0   r   ri   rT   r   rL   r/   r^   rE   r}   r   r9   r   r   historyr"   r.   r-   r#   r!   rm   rm      s    
 
6	an%	AiL!	!G*	6F %6$$V^^:JL !v  ..%	H VvTfF +**>V^^T#$NOG"
G@6 6r#   rm   c                       e Zd ZdZ ej
                  eej                  d      Z ej                  d      Z
 ej                  d      Z ej                  d      Z ej                  d	d
d
      Z ed      Zd Zy)OnboardingPortalz 
    OnboardingPortal model
    onboarding_portalrP   r   r   Fr   r   zemployee/profileT)	upload_tor   rG   rR   c                 8    | j                    d| j                   S )Nz | )rT   tokenr   s    r!   r"   zOnboardingPortal.__str__   s    ##$C

|44r#   N)r(   r)   r*   r+   r   rh   r   ri   rT   r/   r   r7   usedr6   rb   
ImageFieldprofiler   r9   r"   r-   r#   r!   r   r      s     (6''V^^:ML F,E6u-DF*Ef*<4tTG#$NOG5r#   r   N)r+   r   	django.dbr   django.db.models.signalsr   django.dispatchr   django.utils.translationr   r1   base.horilla_company_managerr   employee.modelsr	   horilla.modelsr
   horilla_audit.modelsr   r   recruitment.modelsr   r   r   rC   rE   rO   rm   r   r-   r#   r!   <module>r      s      . $ 6 > $ ' B 5 l  : 
)K(	 )	$\ $:% \ % P*6L *6\5| 5r#   