o
    ނi|                     @   sn  d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d d	lHmIZImJZJ d d
lKmLZL d dlMZMd dlNZNd dlOmPZP d dl	mQZQ d dlRmRZR d dlSmTZT d dlHmUZU eL d ZVeVd ZWdd ZXdd ZYd dlZZZdd Z[dd Z\dd Z]dd Z^dd  Z_d!d" Z`d#d$ Zad%d& Zbd'd( Zcd)d* Zdd+d, Zed-d. Zfd/d0 Zgd1d2 Zhd3d4 Zid5d6 Zjd7d8 Zkd9d: Zld;d< Zmd=d> Znd?d@ ZodAdB ZpdCdD ZqdEdF ZrdGdH ZsdIdJ ZtdKd& ZbdLdM ZudNdO ZvdPdQ ZwdRdS ZxdTdU ZydVdW ZzdXdY Z{dZd[ Z|d\d] Z}d^d_ Z~d`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ ZdS )|    )renderredirect)logout)Q)	constants)encrypt_code)user_not_active	auth_userget_current_pathgetCompanyId)CreditsUserRoleJobDescCallSchedule	CandidateCompanyBrandingProfileSourceProfileExperienceProfileSkillsLookupmasterProfileActivity	jdlibrary)'getCompanyCreditsUsageServicegetJobDescDatagetCandidatesDatagetJdCandidatesDataget_functions_servicecheckCompanyTrailPeriodgetCompanyJdDatagetCallScheduleDetailscompanyUserLstgetInterviewerCandidatesgetCandidateInterviewDatagetCompanyJDsList	jdDetails
getCdnDatagetInterviewCandidatesgetInterviewFeedbackgetCandidateWorkflowDatagetCompanyDatagetDashboardDatagetCompanySourcesDatagetCompanyCandidateUploadDatagetProfileDetailsService getProfileactivityDetailsServicegetResumeDatagetProfileDatagetSlotsAvailablegetRecruitersDatagetRecritmentDashboardDatagetWorkspacesgetWorkspaceDatagetCompanyClients"get_default_email_template_servicegetHiringManagersDatacompanyClientLstRecruitersPerformanceServicegetJobboardsgetJDJobboardsgetOverallDashboardCountsSourcePerformanceService)hirelines_integration_scripthirelines_integration_function)	getConfigN)fetch_gmail_attachments)decrypt_code)datetime)Lower)const_profile_statusDOMAINacertc              
   C   s4   zt j}t| dd|iW S  ty } z d }~ww )Nzhomepage.htmlcompany_typesr   rL   r   	ExceptionrequestrL   e rR   &/home/acert/hirelines/app_web/views.pyhomePage   s   rT   c              
   C   s6   zt j}t| dd|dW S  ty } z d }~ww )Nweb_index.htmlzweb_page.html)template_namerL   rM   rO   rR   rR   rS   webHomePage(   s   rW   c                 C   s   dd }dd }|    }|   }g }t }t|||}|D ]G}	|	dr5||	dd   q$|	dr;q$|	dre|	dd  }
t|
t|
	  }|
	 }d	| d
}|||d|  q$|	drkq$q$d
|S )Nc                 S   s   |   S )zFRemoves leading spaces for comparison but keeps the indentation intact)lstrip)linerR   rR   rS   normalize_line?   s   z&diff_highlight.<locals>.normalize_linec                 S   s   | |  S )z#Adds back the preserved indentationrR   )rY   indentationrR   rR   rS   add_indentationC   s   z'diff_highlight.<locals>.add_indentationz     z- z+ z<span class="highlight">z</span> z? 
)strip
splitlinesdifflibDifferlistcompare
startswithappendlenrX   join)preset	user_coderZ   r\   preset_lines
user_linesdiff_resultdifferdiffrY   	user_lineuser_indentationuser_contenthighlighted_linerR   rR   rS   diff_highlight>   s,   




ru   c              
   C   .   z	t | dddiW S  ty } z d }~ww )NrU   rV   z
login.htmlr   rN   rP   rQ   rR   rR   rS   	loginPageh   s   ry   c                 C   s   t |  tdS )Nz/login)r   r   )rP   rR   rR   rS   logout_view   s   rz   c              
   C   rv   )NrU   rV   zregister.htmlrw   rx   rR   rR   rS   registerPage   s   r{   c           	   
      s   | j js| j jst| t| jd dS z7| j }t|}|j}t|}t	| j
 t| j }t|} fdd|D }|rFt| dd||dW S tdW S  tyW } z d }~ww )	N	PATH_INFOafter_login_redirect_toc                    *   g | ]}|d  D ]
}|d  kr|qqS childmenuItemLinkrR   .0menuItemObjr   currentPathrR   rS   
<listcomp>       
z!dashboardPage.<locals>.<listcomp>portal_index.htmlzdashboard.html)rV   menuItemListdashboard_data../)user	is_activeis_staffr   strMETAr	   roler   r
   pathr   r-   r   r   rN   )	rP   	user_mail	user_data	user_roler   
company_idr   menuItemObjListrQ   rR   r   rS   dashboardPage   s$   


r   c              
   C   s   | j js| j jst| t| jd dS z?| j }t|}|j}t|}t	|}d|i}t
 d}tj||d}t|j}	d}
|	d dkrH|	d	 }
t| d
d||
dW S  ty_ } z d }~ww )Nr|   r}   r   z/api/emailtemp-listjson 
statusCoder   datar   zemail_templates.html)rV   r   
emailTemps)r   r   r   r   r   r   r	   r   r   r   acert_domainrequestspostr   loadstextr   rN   )rP   r   r   r   r   r   payloadurlapi_resr   r   rQ   rR   rR   rS   emailTemplatesPage   s,   


r   c              
         | j js| j jst| t| jd dS z3| j }t|}|j}t|}t	| j
  fdd|D }t|j}|rBt| dd||dW S tdW S  tyS } z d }~ww )	Nr|   r}   c                    r   r   rR   r   r   rR   rS   r      r   z"candidatesPage.<locals>.<listcomp>r   zcandidates.html)rV   r   candidates_datar   )r   r   r   r   r   r   r	   r   r   r
   r   r   idr   r   rN   )rP   r   r   r   r   r   r   rQ   rR   r   rS   candidatesPage   s"   


r   c              
      s   | j js| j jst| t| jd dS z3| j }t|}|j}t|}t	| j
  fdd|D }tj }|rBt| dd||dW S tdW S  tyS } z d }~ww )	Nr|   r}   c                    r   r   rR   r   r   rR   rS   r   
  r   zreportsPage.<locals>.<listcomp>r   reports.html)rV   r   job_descriptionsr   )r   r   r   r   r   r   r	   r   r   r
   r   r   objectsallr   r   rN   )rP   r   r   r   r   r   r   rQ   rR   r   rS   reportsPage   s"   


r   c           	   
      s   | j js| j jst| t| jd dS z<| j }t|}|j}t|}t	| j
  fdd|D }|rKt|}t||}t| dd||d |d d	W S td
W S  ty\ } z d }~ww )Nr|   r}   c                    r   r   rR   r   r   rR   rS   r   (  r   z"jobDescription.<locals>.<listcomp>r   zjob_descriptions_list.htmlactiveJd
inactiveJd)rV   r   r   r   r   )r   r   r   r   r   r   r	   r   r   r
   r   r   r&   r   r   rN   )	rP   r   r   r   r   r   	companyIdallJdsrQ   rR   r   rS   jobDescription  s$   

 
r   c           
   
      s   | j js| j jst| t| jd dS z2| j }t|}|j}t|}t	| j
 t|}t||\}} fdd|D }t| dd||dW S  tyR }	 z d }	~	ww )Nr|   r}   c                    r   r   rR   r   r   rR   rS   r   F  r   z%Addjobdescription.<locals>.<listcomp>r   zadd_job_description.html)rV   r   hiring_managers)r   r   r   r   r   r   r	   r   r   r
   r   r   r;   r   rN   )
rP   r   r   r   r   r   r   current_user_idr   rQ   rR   r   rS   Addjobdescription6  s    
r   c                    s   | j js| j jst| t| jd dS z_| j }t|}|j}td| t	|}t
|}t| j t||}t||}t||\}	}
d}|rU|drUt|dt|
k}t||} fdd|D }t| dd	|||||	||d
W S  ty } z d }~ww )Nr|   r}   r   Fhiringmanagerc                    r   r   rR   r   r   rR   rS   r   e  r   z)update_jobdescription.<locals>.<listcomp>r   zupdate_job_description.html)rV   r   
jd_detailsr   recruiters_datar   is_hiring_manager
job_boards)r   r   r   r   r   r   r	   r   printr   r   r
   r   r'   r5   r;   getr?   r   rN   )rP   update_jd_idr   r   r   compyIdr   r   r   r   user_idr   r   r   rQ   rR   r   rS   update_jobdescriptionN  s2   





r   c              
      s   zC| j }t|}|j}t|}t|}t| j t||}t|}t	
d|}	t
d|}
 fdd|D }t| dd||||	|
dW S  tyP } z d }~ww )Nz
#enc_jdid#c                    r   r   rR   r   r   rR   rS   r     r   z'jobDescriptionSetUp.<locals>.<listcomp>r   zjd_setup_new.html)rV   r   r   r    hirelines_integration_script_enc"hirelines_integration_function_enc)r   r	   r   r   r   r
   r   r'   r   rB   replacerC   r   rN   )rP   jd_idr   r   r   r   r   r   enc_jdidr   r   r   rQ   rR   r   rS   jobDescriptionSetUp  s(   


r   c              
   C   s   | j js| j jst| t| jd dS z;| j }t|}|j}|j}|j	}t
|}|j	}tjj|d }t|}	|sCtjjdd }t| dd|||	dW S  ty[ }
 z d }
~
ww )Nr|   r}   	companyidr   r   zbranding.html)rV   r   companyBrandingemail_template_data)r   r   r   r   r   r   r	   r   emailr   r   r   r   filterfirstr:   r   rN   )rP   r   r   r   
user_emailuser_companyidr   r   r   r   rQ   rR   rR   rS   brandingPage  s*   

r   c           	   
   C   s   | j js| j jst| t| jd dS z'| j }t|}|j}t|}t	|}t
|}t|j}t| dd|||dW S  tyG } z d }~ww )Nr|   r}   r   zadd_candidate.html)rV   r   jds_datasources_data)r   r   r   r   r   r   r	   r   r   r   r!   r.   r   r   rN   )	rP   r   r   r   r   r   jds_listr   rQ   rR   rR   rS   addCandidatePage  s   
r   c              
   C   s   | j js| j jst| t| jd dS zH| j }t|}|j}|j}t	|}t
 d}d|i}tj||d}	t|	j}
d}|
d dkrG|
d	 }t|}t|}t| d
d||||dW S  tyh } z d }~ww )Nr|   r}   z/api/get-emailtemp-datar   r   r   r   r   r   r   zupdate_emailtemp.html)rV   r   r   r   r   )r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   rN   )rP   eidr   r   r   r   r   r   r   r   r   r   r   rQ   rR   rR   rS   updateEmailTempPage  s0   


r   c           
   
   C   s   | j js| j jst| t| jd dS z)| j }t|}|j}t|}t	|}t
||}t||j}t| dd|||dW S  tyI }	 z d }	~	ww )Nr|   r}   r   zjd_data.html)rV   r   jd_datar   )r   r   r   r   r   r   r	   r   r   r   r   r   r   r   rN   )
rP   jidr   r   r   r   r   r   r   rQ   rR   rR   rS   
jdDataPage  s"   


r   c              
   C   (   zt | dW S  ty } z d }~ww )Nztrail_expired.htmlrw   rx   rR   rR   rS   trialExpired	  s   r   c              
      r   )	Nr|   r}   c                    r   r   rR   r   r   rR   rS   r   #  r   z+interviewCandidatesList.<locals>.<listcomp>r   zinterview_candidates.html)rV   r   interview_candidatesr   )r   r   r   r   r   r   r	   r   r   r
   r   r$   r   r   r   rN   )rP   r   r   r   r   r   r   rQ   rR   r   rS   interviewCandidatesList  s"   


r   c                 C   s   | j js| j jst| t| jd dS z9t|}t }|d }|d }|d }|d }|d }|d }	|d	 }
t| d
d|||d |d |	||||
d
W S  t	yY } z d }~ww )Nr|   r}   job_desc_datacandidate_datainterview_datascreening_datacoding_dataprofile_dataprofiling_videor   zcandidate_interview.htmlsections_questions_lstsections_lst)
rV   r   cdn_datar   interview_sectionsr   r   r   r   r   )
r   r   r   r   r   r   r%   r(   r   rN   )rP   sch_idr   r   r   r   interv_sect_quesr   r   r   r   rQ   rR   rR   rS   candidateInterview3  s(   
r   c              
   C   s   | j js| j jst| t| jd dS z.| j }t|}|j}t|}t	|}| j
dd}|d }|d }	t| dd|||	|d	W S  tyN }
 z d }
~
ww )
Nr|   r}   statusNr      r   zinterview_schedule.html)rV   r   interviewersr   schedule_type)r   r   r   r   r   r   r	   r   r   r"   GETr   r   rN   )rP   cidr   r   r   r   call_schedule_detailsr   r   r   rQ   rR   rR   rS   interviewScheduleM  s$   
r   c           	   
      s   | j js| j jst| t| jd dS z4| j }t|}|j}|j}t	|}t
| j d} fdd|D }|rCt| dd|||dW S td	W S  tyT } z d }~ww )
Nr|   r}   Yc                    r   r   rR   r   r   rR   rS   r   {  r   z"evaluationPage.<locals>.<listcomp>r   zevaluation.html)rV   r   user_companyhide_reg_numberr   )r   r   r   r   r   r   r	   r   r   r   r
   r   r   r   rN   )	rP   r   r   r   r   r   r   r   rQ   rR   r   rS   evaluationPageh  s$   

r   c              
   C   ~   | j js| j jst| t| jd dS z| j }t|}|j}t|}t	|j
}t| dd||dW S  ty> } z d }~ww )Nr|   r}   r   zfeedback.html)rV   r   interviewed_candidates)r   r   r   r   r   r   r	   r   r   r)   r   r   rN   )rP   r   r   r   r   r   rQ   rR   rR   rS   feedbacksPage     
r   c              
   C   s   | j js| j jst| t| jd dS z| j }t|}|j}t|}t	||j
}t| dd||dW S  ty? } z d }~ww )Nr|   r}   r   zinterviewer_feedback.html)rV   r   feedback_data)r   r   r   r   r   r   r	   r   r   r*   r   r   rN   )rP   r   r   r   r   r   r  rQ   rR   rR   rS   interviewerFeedback  s   r  c           	   
   C   s   zO|   }tjj|d }|rGtjj|jd }tjj|jd }t	jj|jd }|j|j
|jr:t|jnd|jrA|jnd|jd}t| dd|iW S  tyb } ztt|  d }~ww )	N)meetinglinkr   r   r   r   )candidate_idschedule_idcallend_statuscompany_logocompany_namezcandidate_call.htmlcall_details)build_absolute_urir   r   r   lastr   candidateidr   r   r   r   callendflagr   logourlnamer   rN   r   )	rP   room_idcurrent_urlcall	candidatecompany_detailsbranding_detailsr  rQ   rR   rR   rS   candidateSideMeetingPage  s&   r  c              
   C   s   | j js| j jst| t| jd dS z+| j }t|}|j}t|}t	|}|d }|d }|d }	t
| dd||	||dW S  tyK }
 z d }
~
ww )	Nr|   r}   candidate_inforegistrations_datafeedbacks_datar   zcandidate_data.html)rV   r   r  r  r  )r   r   r   r   r   r   r	   r   r   r+   r   rN   )rP   r   r   r   r   r   candidatedatar  r  r  rQ   rR   rR   rS   candidateData  s$   
r  c              
   C   s   | j js| j jst| t| jd dS z&| j }t|}t|}|j}t	|}t
|}t| dd||d |d dW S  tyF } z d }~ww )Nr|   r}   r   zusersLst.htmlusrsroles)rV   r   usersDataLstrolesLst)r   r   r   r   r   r   r	   r   r   r   r#   r   rN   )rP   r   r   r   r   r   	usersDatarQ   rR   rR   rS   userLst  s    

r#  c              
   C   sz   | j js| j jst| t| jd dS z| j }t|}t|}|j}t	|}t
| dd|dW S  ty< } z d }~ww )Nr|   r}   r   r   )rV   r   )r   r   r   r   r   r   r	   r   r   r   r   rN   )rP   r   r   r   r   r   rQ   rR   rR   rS   r     s   c              
   C   s   | j js| j jst| t| jd dS z"| j }t|}|j}t|}d|j	i}t
|}t| dd||dW S  tyB } z d }~ww )Nr|   r}   r   r   zcredits_usage_report.html)rV   r   credits_usage)r   r   r   r   r   r   r	   r   r   r   r   r   rN   )rP   r   r   r   r   r   r$  rQ   rR   rR   rS   creditsUsageReportPage  s    


r%  c              
   C   s   | j js| j jst| t| jd dS z"| j }t|}|j}t|}t	|j
}tj}t| dd|||dW S  tyB } z d }~ww )Nr|   r}   r   zcompany_data.html)rV   r   rL   company_data)r   r   r   r   r   r   r	   r   r   r,   r   r   rL   r   rN   )rP   r   r   r   r   r&  rL   rQ   rR   rR   rS   companyPage*  s    


r'  c              
   C   s>   zt  d d }t| dd|dW S  ty } z d }~ww )N
APP_CONFIGdemo_videoidrU   z	demo.html)rV   
demo_video)rD   r   rN   )rP   r*  rQ   rR   rR   rS   demoPageB  s   r+  c              
   C   r   )Nztnc.htmlrw   rx   rR   rR   rS   termsAndConditionsPageN     r,  c              
   C   r   )Nzprivacy_policy.htmlrw   rx   rR   rR   rS   privacyPolicyPageX  r-  r.  c              
   C   r   )Nr|   r}   r   zsources.htmlrV   r   r   )r   r   r   r   r   r   r	   r   r   r.   r   r   rN   rP   r   r   r   r   r   rQ   rR   rR   rS   sourcesPagec  r  r1  c           
   
   C   s   | j js| j jst| t| jd dS z,| j }t|}|j}t|}t	|}t
|}t|j}t|}t| dd||||dW S  tyL }	 z d }	~	ww )Nr|   r}   r   zcandidate_upload.html)rV   r   r   r   candidates_upload_data)r   r   r   r   r   r   r	   r   r   r   r!   r.   r   r/   r   rN   )
rP   r   r   r   r   r   r   r   r2  rQ   rR   rR   rS   uploadCandidatesPagex  s$   

r3  c              
      sH  | j js| j jst| t| jd dS z| j }t|}td| |j}td| t	|}t
| j  fdd|D }ttjj|jd d}ttjj|jd }|D ]}tjj|d	 d
 }	|	rj|	jnd|d< |dptd|d< t t|d d|d< |dr|d d|d< nd|d< tjj|d dddddd}
d}|
D ]*}zt|dd}t|dd}||kr||| 7 }W n   Y | d|d< qtjj|d ddd  }|r|dd|d!< |d d|d"< qXd|d!< d|d"< qX|rt| d#d$|||d%W S td&W S  ty# } z d }~ww )'Nr|   r}   r   r   c                    r   r   rR   r   r   rR   rS   r     s    
z profilesPage.<locals>.<listcomp>r   z-dateofcreationsourceidr  r   source_codestrengthr   profilestrengthr   NAstatus_textdateofcreation%d-%b-%Y %I:%M %pformatted_dater   )	profileidjobtitlecompanyyearfromyeartosequencez Yearsfinal_experienceprimaryskillssecondaryskillsprimaryskills_namesecondaryskills_namer   zprofiles.html)rV   r   profile_detailssource_listr   )r   r   r   r   r   r   r	   r   r   r   r
   r   rd   r   r   r   r   valuesorder_byr   r   labelr   rI   strftimer   intr   r   r   rN   )rP   r   r   r   r   r   rH  rI  psrcexperience_list	total_expexpyfytskillsrQ   rR   r   rS   profilesPage  s   






rW  c              
   C   s|   | j js| j jst| t| jd dS z| j }t|}|j}t|}t	|}t
| dd||dW S  ty= } z d }~ww )Nr|   r}   r   zprofile_view.html)rV   r   rH  )r   r   r   r   r   r   r	   r   r   r0   r   rN   )rP   pidr   r   r   r   rH  rQ   rR   rR   rS   profileviewPage  s   rY  c              
   C   s   | j js| j jst| t| jd dS zN| j }t|}|j}t|}|r,|d 	d}n|}t
jjdddjddjd	d
d}tjj|dd }|rNd}	nd}	t|}
t| dd|
|||	|dW S  tyn } z d }~ww )Nr|   r}   r   r=  r   A)lookupidr   )lookupmasterid
lookupnameT)flatE1)r=  activitycoder   r   r   zprofileactivity.html)rV   r   activity_detailsactivity_namesemail_existr=  )r   r   r   r   r   r   r	   r   r1   r   r   r   r   excludevalues_listr   existsr   r   rN   )rP   rX  r   r   r   ra  r=  rb  rf  rc  r   rQ   rR   rR   rS   profileactivityviewPage  s4   "rg  c              
   C   sd   z$| j }t|}|j}t|}t|j}t|}t| dd||||dW S  ty1 } z d }~ww )Nr   zresume_inbox.html)rV   r   resumes_datar   r   )	r   r	   r   r   r.   r   r2   r   rN   )rP   r   r   r   r   r   rh  rQ   rR   rR   rS   resumeInboxPage1  s   


ri  c           
   
   C   s   | j js| j jst| t| jd dS z&|}| j }t|}|j}t|}t	||}t
|}t| dd||||dW S  tyF }	 z d }	~	ww )Nr|   r}   r   zupdate_profile.html)rV   r   r   r=  rH  )r   r   r   r   r   r   r	   r   r   r3   r0   r   rN   )
rP   rX  r=  r   r   r   r   r   rH  rQ   rR   rR   rS   updateProfileDetailsPageH  s   
rj  c              
   C   sb   z#| j }t|}|j}t|}t|j}td| t| dd||dW S  ty0 } z d }~ww )Nr   r   zadd_profile.htmlr/  )	r   r	   r   r   r.   r   r   r   rN   r0  rR   rR   rS   addProfilePage`  s   

rk  c                 C   sz   z/|}| j }t|}|j}|j}tjj|jdj}t|}t	|}	t
| dd||	||d|dW S  ty< }
 z d }
~
ww )Nr  r   zview_resume.htmlr   )rV   r   rH  usernamecomany_nameprofile_strengthr=  )r   r	   r   r  r   r   r   r   r   r0   r   rN   )rP   rX  r=  r   r   r   rl  rm  r   rH  rQ   rR   rR   rS   view_resumePages  s    
ro  c              
   C   s\   z | j }t|}|j}|j}|j}t|}t| dd|||dW S  ty- } z d }~ww )Nr   zwork_calender.html)rV   r   r   r   )r   r	   r   r   r   r   r   rN   )rP   r   r   r   r   r   r   rQ   rR   rR   rS   workCalenderPage  s   rp  c           
   
   C   s   z)t |}td| t|\}}}}t d }t|d }t| d|||||dW S  ty@ }	 ztd| d|	   d }	~	ww )Ndecrypt_cidCALL_SCHEDULING_CONSTRAINTSblock_hoursz!candidate_interview_schedule.html)slots_availabler
  	job_titler   rs  z.Error processing interview page for candidate z: )rF   r   r4   rD   rN  r   rN   )
rP   r   deccrypt_cidslots_available_listru  r
  r   call_scheduling_constraintsBLOCK_HOURSrQ   rR   rR   rS   scheduleInterviewPage  s   



rz  c              
      sZ  | j js| j jst| t| jd dS z| j }t|}|j}|j}t	|}t
| j t| j }t }|d}|d}	| jd}
| jd}|dkrbtjj|d|dtd	d
d	}d}ntjjddg|dtd	d
d	}d}t||||
|d} fdd|D }|rt| dd|||	||d|W S tdW S  ty } z d }~ww )Nr|   r}   z%Y-%mz%B, %Y	recruitermonth	Recruiter)r   r   r   r  r   FzHR-Admin)role__inr   T)r   r   logged_recruiter_idselected_recruitermonth_valuec                    r   r   rR   r   r   rR   rS   r     r   z*recruiterdashboardPage.<locals>.<listcomp>r   zrecruiter_dashboard.html)rV   r   current_month_valuecurrent_month_label
recruitersshow_all_optionr   )r   r   r   r   r   r   r	   r   r   r   r
   r   r   rG   nowrM  r   r   r   r   r   rK  rH   rJ  r6   r   r   rN   )rP   r   r   r   r  r   r   r  r  r  r  r  r  r  recruitment_dashboard_datar   rQ   rR   r   rS   recruiterdashboardPage  sd   





r  c           	   
      s   z>| j }t|}|j}t|}t| j  fdd|D }t|}t|}|r:t| dd||d |d |j	|dW S t
dW S  tyK } z d }~ww )	Nc                    r   r   rR   r   r   rR   rS   r     r   z!workspacePage.<locals>.<listcomp>r   zworkspace.htmlr   r   )rV   r   
workspaces
assign_jds	user_nameclients_datar   )r   r	   r   r   r
   r   r7   r9   r   r  r   rN   )	rP   r   r   r   r   r   r  r  rQ   rR   r   rS   workspacePage  s    
&
r  c              
   C   sb   z#| j }t|}|j}t|}t||}td| t| dd||dW S  ty0 } z d }~ww )Nworkspace_datar   zworkspace_data.html)rV   r   r  )r   r	   r   r   r8   r   r   rN   )rP   widr   r   r   r   r  rQ   rR   rR   rS   workspaceDetailsPage  s   

r  c           	   
   C   s   | j js| j jst| t| jd dS zA| j }t|}t|}|j}t	|}t
|}td| |d D ]}|d rC|d d|d< q3d|d< q3t| dd	||d d
W S  tya } z d }~ww )Nr|   r}   
clientDatar  	createdatr;  -r   zclientLst.html)rV   r   r   )r   r   r   r   r   r   r	   r   r   r   r<   r   rM  r   rN   )	rP   r   r   r   r   r   r  clientrQ   rR   rR   rS   	clientLst0  s*   



r  c              
   C      | j js| j jst| t| jd dS z*| j }t|}|j}t|}d|j	i}t
|}t| dd||d |d |d d	W S  tyJ } z d }~ww )
Nr|   r}   r   r   z"recruiters_performance_report.htmlr   	from_dateto_daterV   r   recruiter_reportr  r  )r   r   r   r   r   r   r	   r   r   r   r=   r   rN   )rP   r   r   r   r   r   recruiters_performancerQ   rR   rR   rS   !recruiters_performance_reportPageK      


r  c              
      s   z2| j }t|}|j}t|}t| j  fdd|D }t|}|r.t| dd||dW S tdW S  t	y? } z d }~ww )Nc                    r   r   rR   r   r   rR   rS   r   r  r   z!jobBoardsPage.<locals>.<listcomp>r   zjob_boards.html)rV   r   r   r   )
r   r	   r   r   r
   r   r>   r   r   rN   )rP   r   r   r   r   r   r   rQ   rR   r   rS   jobBoardsPageg  s   

r  c           
   
      s   z<| j }t|}|j}t|}t| j t| j }t|}t|} fdd|D }|r8t	| dd|||dW S t
dW S  tyI }	 z d }	~	ww )Nc                    r   r   rR   r   r   rR   rS   r     r   z(overallDashboardPage.<locals>.<listcomp>r   zoverall_dashboard.html)rV   r   r   dashboard_countsr   )r   r	   r   r   r
   r   r   r-   r@   r   r   rN   )
rP   r   r   r   r   r   r   r  r   rQ   rR   r   rS   overallDashboardPage  s"   


r  c              
   C   r  )
Nr|   r}   r   r   zsource_performance_report.htmlr   r  r  r  )r   r   r   r   r   r   r	   r   r   r   rA   r   rN   )rP   r   r   r   r   r   source_performancerQ   rR   rR   rS   source_performance_reportPage  r  r  )django.shortcutsr   r   django.contrib.authr   django.db.modelsr   app_api.functionsr   app_api.functions.enc_decr   app_api.functions.masterdatar   r	   r
   r   app_api.modelsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   app_api.functions.servicesr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   app_api.functions.constantsrB   rC   hirelines.metadatarD   r   r   app_api.functions.email_resumerE   rF   rG   django.db.models.functionsrH   rI   domainsr   rT   rW   rb   ru   ry   rz   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.  r1  r3  rW  rY  rg  ri  rj  rk  ro  rp  rz  r  r  r  r  r  r  r  r  rR   rR   rR   rS   <module>   s    D

*
 !!9
  
]*D