
    si                     \   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZ ddl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$ G d de      Z%y)zG
models.py

This module is used to register models for onboarding app

    )literal_eval)datetime)	urlencode)models)	post_save)receiver)reverse)gettext_lazy)HorillaCompanyManager)Employee)HorillaModel)HorillaAuditInfoHorillaAuditLogrender_template)	CandidateRecruitmentc                   J   e Zd ZdZ ej
                  d ed            Z ej                  e	 ed      ddej                        Z ej                  e ed	      
      Z ej                  d      Z ej"                  d ed            Z ed      Zd Z G d d      Zy)OnboardingStagez 
    OnboardingStage models
       zStage Title
max_lengthverbose_namer   Tonboarding_stage)r   nullrelated_name	on_deletezStage Managers)r   )r   FzIs Final Stage)defaultr   recruitment_id__company_idc                     | j                    S N)stage_titleselfs    5/var/www/python-projects/worksol/onboarding/models.py__str__zOnboardingStage.__str__.   s    ""#$    c                   6    e Zd ZdZ ed      Z ed      ZdgZy)OnboardingStage.Meta3
        Meta class for additional options
        zOnboarding StagezOnboarding StagessequenceN)__name__
__module____qualname____doc___r   verbose_name_pluralordering r'   r%   Metar)   1   s'    	 +, 34<r'   r4   N)r,   r-   r.   r/   r   	CharFieldr0   r"   
ForeignKeyr   CASCADErecruitment_idManyToManyFieldr   employee_idIntegerFieldr+   BooleanFieldis_final_stager   objectsr&   r4   r3   r'   r%   r   r      s     #&""c-@PQK&V&&}%'..N )&((BR@STK"v""-H(V((A&6$7N $$@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"   r8   save)r?   instancecreatedkwargsinitial_stages        r%   create_initial_stagerH   ;   sI    
 h//557')!"$-!'/$ 8r'   c                   $   e Zd ZdZ ej
                  d ed            Z ej                  e	ddej                  d      Z ej                  edd ed	      
      Z ej                  ed ed            Z ed      Zd Zd Z G d d      Zy)OnboardingTaskz
    OnboardingTask models
    r   z
Task Titler   Tonboarding_task)r   blankr   r   cand_onboarding_task
Candidates)rL   r   r   zTask Managers)r   r   $stage_id__recruitment_id__company_idc                 T    d| j                   i}t        d      }| dt        |       S )z!
        To get edit url
        task_idzcandidate-tasks-status?)pkr	   r   )r$   query_paramsurls      r%   get_detail_urlzOnboardingTask.get_detail_urlb   s8    
 tww
 ./a	,/011r'   c                     | j                    S r!   )
task_titler#   s    r%   r&   zOnboardingTask.__str__l   s    //"#r'   c                   0    e Zd ZdZ ed      Z ed      Zy)OnboardingTask.Meta;
        Meta class to add some additional options
        Onboarding TaskOnboarding TasksNr,   r-   r.   r/   r0   r   r1   r3   r'   r%   r4   rZ   o        	 *+ 23r'   r4   N)r,   r-   r.   r/   r   r5   r0   rX   r6   r   r7   stage_idr9   r   
candidatesr   r:   r   r>   rV   r&   r4   r3   r'   r%   rJ   rJ   H   s     "!!SqOJ v  ..&H (''+|_	J )&((0q?QK $$JKG2$4 4r'   rJ   c                   &    e Zd Zd Z G d d      Zy)OnboardingCandidatec                 4    t        dd| j                  i      S )z)
        Get detail url pipeline
        zonboarding-cand-detail-viewrS   )rF   )r	   rS   r#   s    r%   get_detail_url_pipelinez+OnboardingCandidate.get_detail_url_pipelinez   s     4dDGG_MMr'   c                   4    e Zd ZdZ ed      Z ed      ZdZy)OnboardingCandidate.MetaTzOnboarding CandidatezOnboarding Candidates
onboardingN)r,   r-   r.   proxyr0   r   r1   	app_labelr3   r'   r%   r4   rg      s#    /0 78 	r'   r4   N)r,   r-   r.   re   r4   r3   r'   r%   rc   rc   x   s    N! !r'   rc   c                   6    e Zd ZdZ ej
                  eej                  d      Z ej                  e
ej                  d ed            Z ej                  dd      Z ej                  dd	
      Z ed      Zd Z fdZd Z fdZ G d d      Z xZS )CandidateStagez
    CandidateStage model
    r   r   r   	candidateStage)r   r   r   T)rL   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__   s!    ##$E$*B*B)CDDr'   c                     | j                   j                  rt        j                         | _        t        t        |   |i | y r!   )rs   r=   r   todayonboarding_end_datesuperrl   rC   )r$   argsrF   	__class__s      r%   rC   zCandidateStage.save   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/)rr   candidate_taskfiltercount)r$   
cans_taskscompleted_taskss      r%   task_completion_ratioz$CandidateStage.task_completion_ratio   sM     &&55
$++6+:!'')*!J,<,<,>+?@@r'   c                 .   |j                  d      rs|j                  d      rbt        |dd       }t        j                  j                  || j                  | j                        j                         }t        d| ||d      S t        | -  |      }|S )Nget__task   )onboarding_task_id__idrr   r`   z"cbv/pipeline/onboarding/tasks.html)rD   taskrQ   )
startswithendswithr   CandidateTaskr>   r   rr   rs   rB   r   rw   __getattribute__)r$   namerQ   r   valuery   s        r%   r   zCandidateStage.__getattribute__   s    ??6"t}}W'="4":.G ((//'.!..11 0  eg	  #4!4GD  (.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/   r0   r   r2   r3   r'   r%   r4   r      s    	 56<r'   r4   )r,   r-   r.   r/   r   OneToOneFieldr   PROTECTrr   r6   r   r0   rs   	DateFieldrv   r;   r+   r   r>   r&   rC   r   r   r4   __classcell__)ry   s   @r%   rl   rl      s     (6''V^^:LL ,&++.. wZ	 +&**DA"v""a8H#$NOGE:
A"   r'   rl   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d Z G d d      Zy)r   z
    CandidateTask model
    todoTodo	scheduled	ScheduledongoingOngoingstuckStuckr{   Doner~   rm   T)r   r   r   2   )r   choicesrL   r   r   )r   rp   history_set)r   basesc                 8    | j                    d| j                   S )N|)rr   onboarding_task_idr#   s    r%   r&   zCandidateTask.__str__   s!    ##$Ad&=&=%>??r'   c                      t        dd| i      S )z?
        This method for get custom column for status.
        zcbv/dashboard/status.htmlrD   )pathcontextr   r#   s    r%   
status_colzCandidateTask.status_col   s    
 ,&
 	
r'   c                   0    e Zd ZdZ ed      Z ed      Zy)CandidateTask.Metar[   r\   r]   Nr^   r3   r'   r%   r4   r      r_   r'   r4   N)r,   r-   r.   r/   r0   choicer   r6   r   r   rr   r   r`   r5   r|   rJ   r   r   r>   r   r   historyr&   r   r4   r3   r'   r%   r   r      s    
 
6	an%	AiL!	!G*	6F %6$$V^^:JL !v  ..%	H VvTfF +**>V^^T#$NOG"
G@
4 4r'   r   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_portalrm   r   )r   F)r   r   zemployee/profileT)	upload_tor   rL   rp   c                 8    | j                    d| j                   S )Nz | )rr   tokenr#   s    r%   r&   zOnboardingPortal.__str__	  s    ##$C

|44r'   N)r,   r-   r.   r/   r   r   r   r   rr   r5   r   r<   usedr;   r   
ImageFieldprofiler   r>   r&   r3   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/   astr   r   urllib.parser   	django.dbr   django.db.models.signalsr   django.dispatchr   django.urlsr	   django.utils.translationr
   r0   base.horilla_company_managerr   employee.modelsr   horilla.modelsr   horilla_audit.modelsr   r   horilla_views.cbv_methodsr   recruitment.modelsr   r   r   rH   rJ   rc   rl   r   r   r3   r'   r%   <module>r      s      "  . $  6 > $ ' B 5 5 l  B 
)K(	 )	-4\ -4`!) !9 \ 9 x54L 54p5| 5r'   