
    si6                     @   d 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 dd	lmZmZmZmZmZ dd
lmZ ddlmZm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 G d de      Z G d de      Z G d de      Zy)z:
filters.py
Used to register filter for onboarding models
    N)forms)filters)	FilterSet)Company)Employee)HorillaFilterSet)CandidateStageCandidateTaskOnboardingCandidateOnboardingStageOnboardingTask)RecruitmentFilter)	CandidateRecruitmentc                   $    e Zd ZdZ G d d      Zy)CandidateTaskFilterz
    Task filter class
    c                       e Zd ZdZeZdZy)CandidateTaskFilter.Meta
        Meta
        __all__N)__name__
__module____qualname____doc__r
   modelfields     6/var/www/python-projects/worksol/onboarding/filters.pyMetar      s    	 r   r    N)r   r   r   r   r    r   r   r   r   r      s     r   r   c                   P    e Zd ZdZ ej
                  d      Z G d d      Zd Zy)r   z
    RecruitmentFilter
    filter_by_namemethodc                       e Zd ZdZeZdZy)RecruitmentFilter.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r    r&   .   s    	 r   r    c                    |j                         }|d   }t        |      dkD  rdj                  |dd       nd}|j                  |      |j                  |      z  |j                  |      z  |j                  |	      z  }|r|r|j                  ||
      }n)|r|j                  |      }n|r|j                  |      }||z  }|j	                         S )z=
        Filter queryset by first name or last name.
        r       N )'open_positions__job_position__icontains)title__icontains)(onboarding_stage__stage_title__icontains):onboarding_stage__candidate__candidate_id__name__icontains)4recruitment_managers__employee_first_name__icontains3recruitment_managers__employee_last_name__icontains)r/   )r0   splitlenjoinfilterdistinct)selfqueryset_valueparts
first_name	last_namejob_querysets           r   r"   z RecruitmentFilter.filter_by_name6   s    
 1X
+.u:>CHHU12Y'r	 OOEOJoouo56oouoMN ooKP   	 )EODM ' H EO ' H DM ' H l*  ""r   N)	r   r   r   r   django_filters
CharFiltersearchr    r"   r   r   r   r   r   '   s+     '^&&.>?F  #r   r   c                      e Zd ZdZ ej
                  dd      Z ej                  de	j                  j                               Z ej                  dej                        Z ej                  ej                  j                         d	
      Z ej&                  d ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej
                  dd      Z ej@                  ddejB                  jE                               Z# ej@                  ddejB                  jE                               Z$ G d d      Z%d  Z&y!)"PipelineCandidateFilter-
    FilterSet class for Candidate model
    search_by_name	icontainsr$   lookup_expr0candidate_id__candidate_task__onboarding_task_id
field_namer8   8candidate_id__candidate_task__onboarding_task_id__statusrK   choicesnamer8   rK   (candidate_id__recruitment_id__start_datetypedateattrsrK   widget&candidate_id__recruitment_id__end_date1candidate_id__candidate_interview__interview_dategterK   rH   rW   candidate_id__probation_endltecandidate_id__schedule_date#candidate_id__recruitment_id__titlerK   rH   onboarding_portalfilter_mail_sentrK   r$   rW   joining_datefilter_joining_setc                       e Zd ZdZeZdZy)PipelineCandidateFilter.Meta;
        Meta class to add some additional options
        r   N)r   r   r   r   r	   r   r   r   r   r   r    rg      s    	 r   r    c                     |j                  |      |j                  |      z  |j                  |      z  }|j                         S ) 
        Search by name
        )candidate_id__name__icontains)+onboarding_stage_id__stage_title__icontains).candidate_id__recruitment_id__title__icontainsr5   r6   r7   r8   r9   r:   s       r   rE   z&PipelineCandidateFilter.search_by_name   sP    
 OO%O@oo%oPQooUoST 	
   ""r   N'r   r   r   r   r?   r@   rA   r   ModelMultipleChoiceFilterr   objectsalltasksChoiceFilterr
   choicetask_statusr   	candidate
DateFilterr   	DateInput
start_dateend_datescheduled_fromprobation_endprobation_end_tillprobation_end_fromschedule_dateinterview_datescheduled_tillrecruitmentBooleanFilterwidgetsBooleanWidgetportal_sentjoining_setr    rE   r   r   r   rC   rC   Y   s    '^&&.>KXF-G--E''++-E ''&&M$$K 988""&&(I
 +**=uff%56J )~((;uff%56H /^..Fuff%56N
 .N--0uff%56M 3220uff%56
 3220uff%56
 .N--0uff%56M /^..Fuff%56N /^..Fuff%56N
 ,.++8kK /...&!%%335K
 /...!#%%335K 	#r   rC   c                      e Zd ZdZ ej
                  dd      Z ej                  de	j                  j                               Z ej                  dej                        Z ej                  ej                  j                         d	
      Z ej&                  d ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  d ej*                  ddi            Z ej&                  dd ej*                  ddi            Z ej
                  dd      Z ej@                  ddejB                  jE                               Z# ej@                  ddejB                  jE                               Z$ G d d      Z%d  Z&y!)"KanbanCandidateFilterrD   rE   rF   rG   "candidate_task__onboarding_task_idrJ   *candidate_task__onboarding_task_id__statusrM   rO   rP   recruitment_id__start_daterR   rS   rT   rV   recruitment_id__end_date#candidate_interview__interview_daterZ   r[   r~   r]   r   recruitment_id__titler`   ra   rb   rc   rd   re   c                       e Zd ZdZeZej                  j                  D  cg c]  }|j                  dvr|j                   c}} Zyc c}} w )KanbanCandidateFilter.Metarh   )profileresumeN)	r   r   r   r   r   r   _metar   rO   ).0fields   00r   r    r     sJ    	 $ -2299
zz!66 JJ
 
s   !Ar    c                     |j                  |      |j                  |      z  |j                  |      z  }|j                         S )rj   )name__icontains)=onboarding_stage__onboarding_stage_id__stage_title__icontains recruitment_id__title__icontainsrn   ro   s       r   rE   z$KanbanCandidateFilter.search_by_name  sW    
 OOEO2ooNS   oouoE	F 	   ""r   Nrp   r   r   r   r   r      s    '^&&.>KXF-G--7''++-E ''&&?$$K 988""&&(I
 +**/uff%56J )~((-uff%56H /^..8uff%56N
 .N--"uff%56M 322"uff%56
 322"uff%56
 .N--"uff%56M /^..8uff%56N /^..8uff%56N
 ,.++*K /...&!%%335K
 /...!#%%335K

 

#r   r   c                   L    e Zd ZdZ ej
                  dd      Z G d d      Zy)CandidateFilterrD   rO   rF   r`   c                       e Zd ZdZeZi Zy)CandidateFilter.Metarh   N)r   r   r   r   r   r   r   r   r   r   r    r   "  s    	 r   r    N)r   r   r   r   r   r@   rO   r    r   r   r   r   r     s'     7[ID r   r   c                        e Zd ZdZ ej
                  dd      Z ej
                  d      Z ej                  e	j                  j                         d      Z ej
                  d	d
d      Z ej                  de	j                  j                         d      Z ej                  dej                  j                         d      Z ej                  dej                  j                         d      Z G d d      Z fdZd Zd Z xZS )OnboardingStageFilter
    OnboardingStageFilter
    stage_titlepipeline_search)rK   r$   search_methodr#   zStage Manager)r8   labelonboarding_task__task_titlerF   Task)rK   rH   r   onboarding_task__employee_idzTask Manager)rK   r8   r   recruitment_id__company_idr   onboarding_task__candidates
Candidatesc                       e Zd ZeZg dZy)OnboardingStageFilter.Meta)recruitment_idr   employee_idsequenceis_final_stageN)r   r   r   r   r   r   r   r   r   r    r   Q  s    
r   r    c                     t        |   |i | | j                  j                  d   j                  j
                  j                  ddi       y )Nr   stylewidth:100%;super__init__formr   rW   rU   update)r7   argskwargs	__class__s      r   r   zOnboardingStageFilter.__init__[  sC    $)&)		'..44;;Wm<TUr   c                    |j                         }|d   }t        |      dkD  rdj                  |dd       nd}|j                  |      |j                  |      z  |j                  |      z  }|j                  |	      }|r|r|j                  ||
      }n)|r|j                  |      }n|r|j                  |      }||z  |z  }|j	                         S )rj   r   r(   r)   Nr*   r   (candidate__candidate_id__name__icontains)Jrecruitment_id__onboarding_stage__candidate__candidate_id__name__icontainsstage_title__icontains)+employee_id__employee_first_name__icontains*employee_id__employee_last_name__icontains)r   )r   r1   )	r7   r8   r9   r:   r;   r<   r=   recruitment_querystage_querysets	            r   r   z#OnboardingStageFilter.search_method_  s     1X
+.u:>CHHU12Y'r	OOUOCoouoMNoo[`   	 "F)<F;D ' H <F ' H ;D ' H n,/@@  ""r   c                 l    |j                  |      |j                  |      z  }|j                         S )z;
        This method is used to search recruitment
        r   r   rn   ro   s       r   r   z%OnboardingStageFilter.pipeline_search  s@     ??%?@8??5: DS D
 
   ""r   )r   r   r   r   r   r@   search_onboardingrA   ModelChoiceFilterr   rr   rs   r   r   r   r   r   r   r   r    r   r   r   __classcell__r   s   @r   r   r   +  s    +** ):  WF ,'++!!%%'K #5'"4"40kQW# $=7#<#<1!!%%'$  ";!:!:/$$&" #<'";";0""&&(#
 
V#B#r   r   c                   2    e Zd ZdZ ej
                  dd      Z ej
                  d      Z ej
                  d      Z ej
                  d      Z	 ej                  d	ej                  j                         
      Z G d d      Zdddd fdZ xZS )OnboardingCandidateFilterr   candidate_id__namerF   r`   onboarding_stage_id)rK   candidate_id___countrycandidate_id___staterI   rJ   c                       e Zd ZeZdZy)OnboardingCandidateFilter.Metar   N)r   r   r   r	   r   r   r   r   r   r    r         r   r    Nrequestprefixc                    t         |   ||||       | j                  j                  d   j                  j
                  j                  ddi       y )Nr   rt   r   r   r   )r7   datar8   r   r   r   s        r   r   z"OnboardingCandidateFilter.__init__  sG    xH		!((..55w6NOr   )NN)r   r   r   r   r   r@   r   stage_idcountrystaterq   r   rr   rs   rt   r    r   r   r   s   @r   r   r     s     +**'[ "w!!-BCH g  ,DEGG*@AE-G--E''++-E
 PD P Pr   r   c                   L    e Zd ZdZ ej
                  dd      Z G d d      Zy)OnboardingTaskFilterz 
    Onboarding task filter
    
task_titlerF   r`   c                       e Zd ZeZdZy)OnboardingTaskFilter.Metar   N)r   r   r   r   r   r   r   r   r   r    r     r   r   r    N)r   r   r   r   r   r@   r   r    r   r   r   r   r     s+     +**[ r   r   ) r   r?   djangor   r   base.filtersr   base.modelsr   employee.modelsr   horilla.filtersr   onboarding.modelsr	   r
   r   r   r   recruitment.filtersr   
rec_filterrecruitment.modelsr   r   r   rC   r   r   r   r   r   r   r   r   <module>r      s   
   " "  $ ,  @ 5* /#
 /#d[#i [#|a#I a#Hi  \#, \#~P	 P29 r   