
    ݦi                       d dl Z d dlZd dlmZ d dl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Zd dlmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d d	lmZmZ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' d dl(m)Z) d dl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEm@Z@mFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZr ddlsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZ ddlmZ e edg       eg        eg       d                             Ze edg       eg        eg       d                             Ze edg       eg        eg       d                             Ze edg       eg        eg       d                             Z edg      d        Z edg      d        Z edg      d        Z edg      d         Z edg      d!        Z ed"g      d#        Z ed"dg      d$        Z edg      d%        Z edg      d&        Z ed"g      d'        Z edg      d(        Zd) Z edg      d*        Z edg      d+        Ze edg       eg        eg       d,                             Z ed"dg      d-        Z edg       eg        eg       d.                      Z ed"dg       eg        eg       d/                      Z edg      d0        Z edg      d1        Z edg      d2        Z edg      d3        Z edg      d4        Z edg      d5        Z ed"g       eg        eg       d6                      Z edg      d7        Z edg      d8        Z edg       eg        eg       d9                      Z ed"g      d:        Z ed"dg      d;        Zd< Z edg      d=        Z edg      d>        Z edg       eg        eg       d?                      Z edg      d@        Z edg       eg        eg       dA                      Z edg      dB        Z edg      dC        Z edg      dD        Ze edg       eg        eg       dE                             Ze edg       eg        eg       dF                             Z edg      dG        Z edg      dH        Z ed"g      dI        Z edg      dJ        Z edg      dK        Z edg      dL        Z edg      dM        Z edg      dN        Z edg      dO        Z edg      dP        Z ed"g       eg        eg       dQ                      ZdR Z ed"g      dS        Z edg      dT        Z edg      dU        Z edg      dV        Z edg      dW        Z edg      dX        Z edg      dY        Z edg      dZ        Z edg      d[        Z edg      d\        Z edg      d]        Z edg      d^        Z edg      d_        Ze edg       eg        eg       d`                             Z ed"g      da        Z edg      db        Z edg      dc        Z edg      dd        Z edg      de        Z edg      df        Z edg      dg        Z edg      dh        Z edg       eg        eg       di                      Z edg      dj        Z edg      dk        Z edg      dl        Z ed"g      dm        Z edg      dn        Z edg      do        Z edg      dp        Z ed"g      dq        Z ed"g      dr        Z edg      ds        Z edg      dt        Z edg      du        Z edg      dv        Z ed"g      dw        Z ed"g      dx        Z ed"g      dy        Z  edg      dz        Z edg      d{        Z edg      d|        Z edg      d}        Zd dlZ edg      d~        Z edg      d        Z edg      d        Ze edg       eg        eg       d                             Z	d Z
d Zd Zd Zd Z edg      d        Zy)    N)datetime)urljoin)JsonResponseFileResponse)decrypt_codeencrypt_code)compareVoices)BASE_DIR
MEDIA_ROOT)api_viewauthentication_classespermission_classes)HttpResponser   HttpResponseForbidden)csrf_exempt)perform_login)app_settings)	auth_usergetCompanyIdgetUserCompany)Q)	getConfigcheck_referrer   ),addCompanyDataServicecandidateRegistrationServicedeductCreditsServiceregisterUserServiceauthentication_servicegetJdWorkflowServiceinterviewSchedulingServicejdPublishServicechangeUserstatusServiceupdateJdDataService1skillsWithTopicsWithSubtopicsWithQuestionsService	jdTestAddaddJdServicesupdateJdServicesworkFlowDataServiceinterviewCompletionServicequestionsResponseServicegetInterviewStatusServicegenerateCandidateReportaddNewUserServicenotifyCandidateServicecheckTestHasPaperServicedeleteTestInJdServicesaveInterviewersServicer-   demoUserServiceupdateCandidateWorkflowServicedashBoardGraphDataServicemapUploadedCandidateFieldsprocessAddCandidateService#checkJdCandidateRegistrationServicedownloadUploadReportServicegetResumeDatasoftDeleteResumegenerateBrandedProfilegetRecritmentDashboardDatagetJdProfileDatashortlistProfileServicedashBoardDataServiceaddNewClientServicechangeClientstatusServiceRecruitersPerformanceServicejobBoardConfigServiceSourcePerformanceService)AccountBranding	CandidateCompanyCreditsJobDescLookupmasterRegistrationUser	User_dataWorkflowInterviewMediaCallScheduleBrulesProfileProfileExperienceSourceProfileSkillsEmail_templateCompany
ResumeFileResumeProfileActivityWorkCal	jdlibraryTag)'addCandidateDBscheduleInterviewDBinterviewResponseDBaddInterviewFeedbackDBupdateEmailtempDBinterviewRemarkSaveDBupdateCompanyDBsaveStarQuestiondemoRequestDBdeleteCandidateDBupdateSourcesDataDBupdateCandidateInfoDBupdateDashboardDisplayFlagDBaddProfileDBaddResumeProfileDBupdateProfileDetailsDBupdateProfileEducationDBupdateProfileExperienceDBupdateProfileProjectsDBupdateProfileAwardsDBupdateProfileCertificatesDBupdateProfileSkillsDBupdateProfileActivityDBsaveWorkCalDB scheduleCandidateInterviewLinkDBscheduleCandidateInterviewDBjdRecruiterAssignDBupdateFullProfileDBaddWorkspaceDBaddProfileActivityDBupdateWorkspaceDBupdateProfileCompletionsaveJobBoardConfigDBsaveJDJobBoardsDBaddResumeDBupdateResumeTemplateDBaddResumeFromJobPageDBsaveresumetagsDBpublishCareerJdDB)hirelines_registration_scriptconst_profile_status)fetch_gmail_attachments)r   )convert_word_binary_to_pdfPOSTc                 8   d d dd}	 | j                   dk(  rGt        j                  | j                  j	                  d            }t        |      }t        |      |d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY wN   dataerror
statusCoder   r   r   zError in adding company datar   
methodjsonloadsr   getr   int	Exceptionstrr   requestresponsedataObjsdata_add_statuses        */home/hirelines/hirelines/app_api/views.pyaddCompanyDatar   ,   s     H
#>>V#zz',,"2"26":;H3H=O%(%9H\" !!  #9F!!#s   AA) )	B2BBc                     d d dd}	 | j                   dk(  r4t        j                  | j                        }t	        |       d|d<   d|d<   t        |      S # t
        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   zDetails Saved Sucessfullyr   r   r   zError in Registrationr   )r   r   r   bodyr   r   r   r   r   r   r   r   s       r   addJDCandidater   A   s     H
	>>V#zz',,/H(2:HV%&H\"
 !!	  2Fs   AA 	A8A33A8c                    d d dd}	 | j                   dk(  rGt        j                  | j                  j	                  d            }t        |      }t        |      |d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wr   )
r   r   r   r   r   r   r   r   r   r   r   s        r   registerUserr   X   s     H
>>V#zz',,"2"26":;H1(;O%(%9H\"
 !!	  9F   AA) )	B2BBc                 2   d d dd}	 | j                   dk(  rt        j                  | j                  j	                  d            }t        |      }|d   d k7  rt        j                  j                  |d         j                         }t        | j                  |t        j                  dd d 	       t        |      }d
|d<   |j                  |d<   |d   |d<   n
d|d<   d|d<   d|d<   t%        |      S # t         $ r}d|d<   t#        |      |d<    d }~ww xY w)Nr   r   r   r   r   email)	usr_emailF)signupredirect_urlsignal_kwargstoken_generatedtoken
login_typeAnonymousUserzlogin failedr   zError in Sign-inr   )r   r   r   r   r   r   rN   objectsfilterfirstr   _requestallauth_settingsEMAIL_VERIFICATIONr   roler   r   r   )r   r   r   
auth_tokenusruserr   s          r   	loginUserr   n   s*    H
>>V#zz',,"2"26":;H/9J!}$''..'9J.KQQSg..5E5X5Xaf+/tE ~$5!#'99 )3A&$3!#1 %&H\"
 !!	  -Fs   C!C4 4	D=DDc                    d d dd}	 | j                   dk(  rGt        j                  | j                  j	                  d            }t        |      }t        |      |d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wr   r   r   s        r   r   r      s     H
>>V#zz',,"2"26":;H3H=O%(%9H\"
 !!	  9Fr   c                 @   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   z!Error in adding Test in Work flowr   )r   r   r   r   r   r   r   r&   r   r   r   )r   r   r   	companyIDtestDatar   s         r   	jdAddTestr      s     H

>>V#zz',,"2"26":;H$W\\2I )4H'HV%&H\"
 !!	  >F   A(A; ;	BBBc                 V   d d dd}	 | j                   dk(  rdt        j                  | j                  j	                  d            }t        | j                        }t        ||| j                        }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   zError in Saving JD Datar   )r   r   r   r   r   r   r   r'   r   r   r   )r   r   r   r   jdDatar   s         r   addJDr      s     H

>>V#zz',,"2"26":;H$W\\2I"8IgllCF%HV%&H\"
 !!	  4Fs   A3B 	B(B##B(c                 >   d d dd}	 | j                   dk(  rXt        j                  | j                  j	                  d            }t        | j                        }t        |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   zError in getting JD datar   )r   r   r   r   r   r   r   r$   r   r   r   )r   r   r   r   
jdDataDictr   s         r   jdUpdateDatar      s     H

>>V#zz',,"2"26":;H$W\\2I,X6J)HV%&H\"
 !!	  5Fs   A'A: :	BBBc                 L   d d dd}	 | j                   dk(  r_t        j                  | j                  j	                  d            }t        | j                        }t        ||| j                         d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   zError in JD Updata datar   )r   r   r   r   r   r   r   r(   r   r   r   )r   r   r   r   r   s        r   updateJDr      s     H
	>>V#zz',,"2"26":;H$W\\2IXi=%&H\"
 !!	  4Fs   A.B 	B#
BB#GETc                    d d dd}	 | j                   dk(  rF| j                  j                  d      }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   jidr   r   r   zError in getting jd worflowr   )	r   r   r   r   r   r    r   r   r   )r   r   jobid
company_idworkflow_datar   s         r   getJdWorkflowr      s     H
>>U"KKOOE*E%gll3J0zBM,HV%&H\" !!	  8F   AA( (	B
1BB
c                    d d dd}	 | j                   dk(  rt        | j                        }|j                  }t	               d   d   }d}t        ||      }t        j                  | j                  j                  d            }t        j                  j                  |d   |	      j                  d
ddd      j                         }g }	t        j                   |d
         }
|
D ]2  }dj#                  |j%                               }|	j'                  |       4 |	|d
<   d}t(        j                  j                  |d         }|rF|D ]A  }|s|j*                  |d   k(  s|j,                  dk(  s)|j.                  s6|j.                  }C |r||d<   |d   |d<   ||d<   t1        d|       t3        j4                  ||d      }|j6                  }|r=t        j                  |j9                  d            }|d   }|}|d   dk(  r
||d<   d|d<   t?        |      S # t:        $ r;}d|d<   t=        |      |d<   t1        t=        |             Y d }~t?        |      S d }~ww xY w)Nr   r   r   DOMAINacertz/api/jd-screening-questionsr   jd_id)id	companyidskillsetlocationexpminexpmaxz,  )r   test_idSscreeningPaperr   jd_dataFr   verifyutf-8r   r   zError in getJdQuestionsViewr   ) r   r   r   r   r   r   r   r   r   r   rJ   r   r   valueslastastliteral_evaljoinkeysappendrO   r   	papertypepaperidprintrequestspostcontentdecoder   r   r   )r   r   r   user_companyacert_domainendpointurlr   r   skills_list	skill_setskillr   workFlowData	workFlow_get_evaluation_submissionsresponse_content	json_data
acert_datajd_questionsr   s                        r   getJdQuestionsViewr    s    H
4>>V#W\\*D>>L %;x09L4H,1Czz',,"2"26":;H oo,,0AL,Y``aklvw  AI  J  O  O  QGK(()<=I" *		%**,/""5)* #.GJN#++228G;L2ML!- CI $<<8I+>>9CVCVZ]C](001:1B1B	C
 ,:()!))!4GI$0GL!)G$)1s7UZ)[&9AA JJ'7'>'>w'GH	&v.
)\*a/'3HV$-.H\* !!  8Fc!f !!s1   EH H !H 1H >BH 	I#'IIc                    d d dd}	 | j                   dk(  r}t        j                  | j                  j	                  d            }| j
                  }t        | j
                        }t        |      }t        ||d |j                        }||d<   d|d<   nt        d      S 	 t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w
Nr   r   r   r   r   r   Request BlockedError in saving Job Descriptionr   )r   r   r   r   r   r   r   r   r_   r   r   r   r   r   )r   r   r   
user_emailr   r   c_datar   s           r   addCandidater	  M  s     H
>>V#zz',,"2"26":;H JW\\*D%j1J#HZTWWEF%HV%&H\"():;; # !!  <Fs   BB+ +	C4CCc                 ^   d d dd}	 | j                   dk(  r\t        j                  | j                  j	                  d            }| j
                  }t        |      }t        ||      }||d<   d|d<   nt        d      S 	 t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY wr  )r   r   r   r   r   r   r   r)   r   r   r   r   )r   r   r   r  r   workflowDatar   s          r   r   r     s     H
>>V#zz',,"2"26":;H J%j1J.x
CL+HV%&H\"():;; # !!  <Fs   A5B
 
	B,B''B,c                    d d dd}	 t        | j                        }| j                  dk(  r1| j                  j	                  d      }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   int_idr   r   r   zError in Call Scheduling viewr   )	r   r   r   r   r   r!   r   r   r   )r   cidr   r   r  interview_schedule_datar   s          r   interviewSchedulingr    s     H
&>>U"[[__X.F&@V&L#6HV%&H\" !!	  :Fr   c                 p   d d dd}	 | j                   dk(  rct        | j                        }t        j                  | j
                  j                  d            }t        |j                  |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z"Error in Scheduling Interview viewr   )r   r   r   r   r   r   r   r`   r   r   r   r   )r   r   r   r   resr   s         r   scheduleInterviewViewr    s     H

#>>V#W\\*Dzz',,"2"26":;H%dggx8C"HV%&H\"
 !!  #?F!!#   A2B 	B5B00B5c                 N    	 t        t        d      S #  t        dd      cY S xY w)Nzapplication/javascriptcontent_typez"console.error("Script not found");)r   r   )r   enc_jdids     r   candidateRegistrationCDNFormr    s0    i 9H`aai@Oghhs    $c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   zError in Meeting Response viewr   )	r   r   r   r   r   ra   r   r   r   r   r   r   r  r   s        r   interviewResponseViewr    s     H
#>>V#zz',,"2"26":;H%h/C"HV%&H\"
 !!  #;F!!#   AA% %	B.BBc                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   zError in questios Response viewr   )	r   r   r   r   r   r+   r   r   r   r  s        r   questionsResponseViewr    s     H#>>V#zz',,"2"26":;H*84C"HV%&H\" !!	  #<F!!	#r  c                    d d dd}	 | j                   dk(  rGt        j                  | j                        }t	        |d         }t
        j                  j                  |      }t               d   }|d   }|dk(  rd}n9t        j                  j                  |j                  |j                  |d	   
      }|r|dk(  r|j                  dk(  rt        j                  j                  |d      j                         }|rJ|j                  }	||d<   |j                   |d<   |j                  }	t#        ||	|      }
|
dk(  rd|d<   nd|d<   nd|d<   nd|d<   nd|d<   d|d<   t)        |      S # t$        $ r}d|d<   t'        |      |d<    d }~ww xY w)Nr   r   r   encjdidr   
APP_CONFIGregister_candidate_once_per_jdYr   )r   r   r   NA)r   orderjdz
begin-frominsufficient_creditszInsufficient Creditsr   z#Registration completed successfullyzWorkflow not definedzJD inactivezCandidate already registeredr   r   zError in registerCandidater   )r   r   r   r   r   rJ   r   r   r   rH   r   r   r   statusrO   r   r   r_   r   r   r   )r   r   r   r   job_description
app_configr$  check_candidate_registeredr   r   add_resperrs               r   registerCandidater1    s    H
)>>V#zz',,/H )!45E%oo11U1;O"\2J-78X-Y*-4-0* .7->->-E-ERaRkRk+..$W- .F ./*
 /4NRU4U"))S0$,$4$4$;$;%a$;$P$U$U$WM$%2%<%<
).1>1F1F.%2%<%<
%3HZ%V#'==/EHV,/THV,+A('4HV$#A %&H\"
 !!	  7Hs   EE* *	F3FFc                    d d dd}	 | j                   dk(  rt        | j                        }|j                  }t	        |      }t               d   d   }d}t        ||      }t        t        j                  j                  |      j                  dd	
            }d||d}	t        j                  ||	d      }
|
j                  }|r;t        j                   |j#                  d            }|d   }|d   dk(  r
||d<   d|d<   | j                   dk(  r)t        | j                        }|j                  }t	        |      }t               d   d   }d}t        ||      }t        t        j                  j                  |      j                  dd	
            }t        j                   | j$                  j'                  d            }|d   dk(  rm||d<   ||d<   t        j                  ||d      }|j                  }|r=t        j                   |j#                  d            }|d   }|}|d   dk(  r
||d<   d|d<   |d   dk(  ru||d<   ||d<   t        j                  ||d      }|j                  }|rEt        j                   |j#                  d            }|d   }|d   }d|d<   |d   dk(  r
||d<   d|d<   |d   dk(  r}||d<   ||d<   |d   |v rbt        j                  ||d      }|j                  }|rFt        j                   |j#                  d            }|d   }|d   dk(  r||d<   d|d<   n
d|d<   d|d<   t/        |      S # t(        $ r;}d|d<   t+        |      |d<   t-        t+        |             Y d }~t/        |      S d }~ww xY w) Nr   r   r   r   r   z/api/evaluate-papersr   r   Tflatget_evaluation_papers)request_forenc_company_idcompany_paper_idsFr   r   r   r   r   r   r7  submissionsr8  r9  update_marksanswer_datazMarks Updated successfullysend_evaluation_resultpaper_idzQuery Not Foundz Error in evaluationquestionsViewr   )r   r   r   r   r   r   r   listrO   r   r   values_listr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r8  r   r   r   r9  company_papersr6  r   r   r   r   r   evaluationquestionsr;  r<  respr   s                        r   evaluationViewrD  H  s    H
l>>U" W\\*D>>L),7N$;x09L-H,1C $X%5%5%<%<|%<%T%`%`ajpt%`%u v5!/$5N
 %-MM#>RW$X!4<< JJ'7'>'>w'GH	&v.
\*a/'1HV$-.H\*>>V#W\\*D>>L),7N$;x09L-H,1C !%X%5%5%<%<|%<%T%`%`ajpt%`%u vzz',,"2"26":;H&-7+9)*.?,--5]]3xZ_-`*#=#E#E # $

+;+B+B7+K LI!*6!2J*4' .!3+>(12.&.8+9)*.?,-'}}SER#/#7#7 # $

+;+B+B7+K LI!*6!2J"+M":K'CHV$ .!32=/12.&*BB ,:)*.?,-J'+<<#+==XPU#VL'3';';$'#zz*:*A*A'*JK%)&\
-2/9HV,56H\2'8HV$-.H\* !!  =Fc!f !!s   L3M 	N
'NN
c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   zError in getCallStatusr   )	r   r   r   r   r   r,   r   r   r   r  s        r   getInterviewStatusViewrF    s    
 H
	#>>V#zz',,"2"26":;H+H5C"HV%&H\"
 !!  #3F!!#r  c                    t        j                  | j                  j                  d            }t	        |d         j                  d      d   }t	        |d         j                  d      d   j                  d      d   }t        j                  j                  |      j                         }t        |d	   |j                  
      j                          t        j                  j                  |      j                         }d|_        |j                          t        j                   j#                  t$        dd      }t        j                   j'                  |      rt        j(                  |      D ]l  }|j+                  | d      st        j                   j#                  ||      }t        j                   j-                  |      sXt        j.                  |       n t1        ddi      S )Nr   reg_code_r      .r   )candidateidvideoid)recordedrL  r"  r%  uploadscandidate_audior   success)r   r   r   r   r   splitrH   r   r   r   rP   r   saverQ   callendflagospathr   r   existslistdir
startswithisfileremover   )	r   r   c_codeschidcandidate_detailscall_detailsprofiling_dirfilename	file_paths	            r   interviewFilerc    s|   
 zz',,**623H*%&,,S1!4F$%++C0399#>qAE!))00V0DIIKHY/=N=Q=QRWWY''..%.8==?L"LGGLLY8IJM	ww~~m$

=1 	)H""eWA;/GGLLA	77>>),IIi(		) Y/00    c                 p   d d dd}	 | j                   dk(  rct        j                  | j                  j	                  d            }t        | j                        }t        ||j                         d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   Savedr   r   z#Error in Saving Meeting Status viewr   )r   r   r   r   r   r   r   r*   r   r   r   r   )r   r   r   r   r   s        r   interviewCompletionrg    s     H
#>>V#zz',,"2"26":;HW\\*D&x8&HV%&H\" !!	  #@F!!	#r  c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zFeedback given successfullyr   r   zError in feedback viewr   )r   r   r   r   r   r   r   rb   r   r   r   r   r   r   r   r   s        r   interviewFeedbackrj    s     H

#>>V#W\\*Dzz',,"2"26":;H"42<HV%&H\"
 !!  #3F!!#   A(A; ;	B+B&&B+c                 P   d d dd}	 | j                   dk(  rat        | j                        }t        j                  | j
                  j                  d            }t        ||      }||d<   |d   dk(  rd|d<   t        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   msgzDeleted-successfullyr   r   z$Error in Deleting Test from workflowr   )r   r   r   r   r   r   r   r1   r   r   r   )r   r   r   r   testDetailsr   s         r   deleteTestinJsro  %  s     H
>>V#W\\*Dzz',,"2"26":;H/h?K*HV5!%;;)*& !!	  AFs   A0B 	B%B  B%c                 @   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   zError in saving interviewersr   )r   r   r   r   r   r   r   r2   r   r   r   )r   r   r   r   interviwersDatar   s         r   saveInterviewersForJdrr  <  s     H
>>V#W\\*Dzz',,"2"26":;H5dHEO.HV%&H\" !!	  9Fr   c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   zError in Test has paper idr   )r   r   r   r   r   r   r   r0   r   r   r   )r   r   r   r   testaaPaperDetailsr   s         r   checkTestHasPaperru  R  s     H

#>>V#W\\*Dzz',,"2"26":;H!9$!I1HV%&H\"
 !!  #7F!!#rk  c                 v   d d dd}	 | j                   dk(  rft        | j                        }t        j                  | j
                  j                  d            }| j                  }t        |||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   z#Email Template updated successfullyr   r   zError in updateEmailtempr   )r   r   r   r   r   r   r   FILESrc   r   r   r   )r   r   r   r   fileObjsr   s         r   updateEmailtempry  g  s     H
#>>V#W\\*Dzz',,"2"26":;H}}HdHX6DHV%&H\" !!	  #5F!!	#s   A5B 	B8B33B8c                 v   d d dd}	 | j                   j                  d      }t        |      }t        |d   d      5 }t	        |j                         d      }d|d	    d
|d<   |cd d d        S # 1 sw Y   nxY w	 t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)Nr   r   r  rb  rbapplication/pdfr  attachment; filename="	file_name.pdf"Content-DispositionzError in downloading reportr   r   )	r   r   r-   openr   readr   r   r   )r   r   candidate_idpdf_pathpdf_filer   s         r   candidateReportr  ~  s     t1=H#{{u-*<8(;'. 	(#HMMOBSTH0FxP[G\F]]b.cH*+		 	 	 	 !!	  #8F!!	#s.   5B )A0&	B 0A95B 	B8B33B8c                 j   d d dd}	 | j                   dk(  rnt        | j                        }t        j                  | j
                  j                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   zError in Jd Publishr   )r   r   r   r   r   r   r   r   r"   r   r   r   )r   r   r   r   companyDatar   r   s          r   	jdPublishr    s     H
>>V#W\\*Dzz',,"2"26":;H&w||4K%h{;F%HV%&H\" !!  0Fs   A=B 	B2B--B2c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zCandidate Notified Successfullyr   r   zError in Candidate Notify viewr   )r   r   r   r   r   r   r   r/   r   r   r   ri  s        r   notifyCandidater    s     H

#>>V#W\\*Dzz',,"2"26":;H"8D1@HV%&H\"
 !!  #;F!!#rk  c                    d d dd}	 | j                   dk(  r| j                  }t        |d         }|d   dk(  rD|d   }t        j                  j                  |      }t        j                  j                  ||	      }d
}|j                  |j                  k\  rd}|j                  |j                  z
  }nd
}|j                  }t               d   }	t        |	d         }
t        |	d         }||k  rd
}n
||
k  rd}nd}d
}|d
k(  s|dk(  r(|j                  dk7  rd}d|_        |j                          d}t        t        j                  j                  ||d      j!                  dd            }||||||d|d<   |d   dk(  r|d   }|d   }t#        |||       d|d<   t)        |      S # t$        $ r'}d|d<   t'        |      |d<   Y d }~t)        |      S d }~ww xY w)Nr   r   r   r   request_typecheck_credits
paper_typer3  )r   	transtyper&  r%  r#  lowcredits_warningreg_stop_warningLr'  zHR-Admin)r   role__containsr+  r   Tr4  )r   credit_availablity_statcredits_statushradmin_emails_listcurrent_creditssend_lowcredits_notificationr   deduct_creditsr>  r   r   $Error in getUpdateCompanyCreditsViewr   )r   r   r   rF   r   r   rI   balancecreditsr   r   lowcreditsnotificationrS  r?  rM   r   r@  r   r   r   r   )r   r   r   r   r  company_accountcompany_creditsr  r  r-  r  r  r  r  hr_admin_labelr  r>  r   s                     r   getUpdateCompanyCreditsViewr    sI   
 H
7#>>V#||H%h|&<=J'?:%l3
")//"5"5
"5"K"0"8"8"<"<z\f"<"g*-'"**o.E.EE.1+&5&=&=o>U>U&UO.1+&5&=&=O '[6
%(4H)I%J"#&z2D'E#F "$44&)N$&88%(N%(N/2,"s*#0E&==D7:4AD>',,.!+&*4<<+>+>cqy|+>+}  ,J  ,J  KR  X\  ,J  ,]  '^# ",.E%3*=&53O"  '+;;%l3
#J/$Z
8D%&H\" !!	  #AF!!	#s   FF. .	G7GGc                    d d dd}	 | j                   dk(  rt        | j                        }|j                  }t        j
                  j                  |      }t               d   }t        |d         }t        |d         }|j                  |k  rd}n|j                  |k  rd	}nd
}|j                  |d}	|	|d<   d|d<   t        |      S # t        $ r'}
d|d<   t        |
      |d<   Y d }
~
t        |      S d }
~
ww xY w)Nr   r   r   r3  r#  r  r  r&  r  r'  )balance_creditscredits_avaliabiltyr   r   r   zError in getCreditsViewr   )r   r   r   r   rF   r   r   r   r   r  r   r   r   )r   r   r   r   r  r-  r  r  r  company_account_objr   s              r   getCreditsViewr    s    H
#>>U"W\\*D>>L%oo11L1IO"\2J!$Z0D%E!F":.@#AB&&(88'*# ((*<<&)#&)# #2"9"9&9#  3HV%&H\" !!	  #4F!!	#s   B8C 	C;C66C;c                    d d dd}	 | j                   dk(  rt        | j                        }|j                  }t	        |      }t        j                  | j                  j                  d            }|d   dk(  ry| j                  }t        j                  j                  |      \  }}|d   |_        |d	   |_        |j                          d
}	d
}
|j!                         D ]  }|d   |_        |j                          t%        |j"                        }	| j&                   d| j(                  d    d|j"                   }||_        |j                          t*        dz   |	z   }	dt-        |	d      i}
 ||d<   t/               d   d   }d}t1        ||      }t3        j4                  |||
d      }|j                  }|r8t        j                  |j7                  d            }|d   }|dk(  r
d|d<   d|d<   t?        |      S # t8        $ rF}d|d<   t%        |      |d<   t;        j<                  dt%        |             Y d }~t?        |      S d }~ww xY w)Nr   r   r   r   r  update_brandingr3  css_contentr+  r   z://	HTTP_HOSTz/media/logor{  r  r   r   z/api/company-brandingF)r   filesr   r   r   r   zBranding updated successfullyz"Error in updateCompanyBrandingViewr   z%Error in updateCompanyBrandingView : ) r   r   r   r   r   r   r   r   r   rw  rG   r   get_or_creater   r+  rS  itemslogourlr   schemeMETAr
   r  r   r   r   r   r   r   loggingr   r   )r   r   r   r   r8  r   rx  company_brandingcompany_branding_flaglogo_file_path	logo_filefilelogo_fullpathr   r   r   update_responser   r   resp_status_coder   s                        r   updateCompanyBrandingViewr  /  s_    H
.G>>V#W\\*D>>L),7Nzz',,"2"26":;H'+<<"==<D<L<L<Z<Zeq<Z<r8 #8)1-)@ (*28*< ' %%'!#	$NN, DD/3Aw$,$))+%()9)A)A%BN'.~~&6c',,{:S9TT[\l\t\t[u$vM/<$,$))+%-i%7%FN!'^T(B CID #1({84W=2lH5"*--H9_d"e#2#:#: # $

+;+B+B7+K LI'0'>$'1,+J(12. !!  G?F=s1vFF!!Gs   G,G? ?	I2I		Ic                     t        | j                        }t        |j                        }t	        |j
                  |j
                  d      S )N)namecompanyname)r   r   r   r   r   r  )r   r   companys      r   getUserNamer  h  s6    W\\"DT^^,GFGGrd  c                 :   d d dd}	 t        | j                        }t        j                  | j                  j                  d            x}}t        |j                  |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wNr   r   r   r   r   zError in Creating New Userr   )r   r   r   r   r   r   r.   r   r   r   r   r   r   r   r   userDatar   s         r   addNewUsersr  n  s     H

&"jj)9)9&)ABB8$T^^H=#!" !!	  7F   A%A8 8	BBBc                 :   d d dd}	 t        | j                        }t        j                  | j                  j                  d            x}}t        |j                  |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wr  )r   r   r   r   r   r   r#   r   r   r   r   r  s         r   changeUserStatusr    s     H

&"jj)9)9&)ABB8*4>>(C#!" !!	  7Fr  c           
         d d dd}	 | j                   dk(  r| j                  }t        |d         }|d   dk(  rt        j                  j                  t        |d         |      }t        j                  j                  ||j                  |j                  |d	   t        |d
               j                         }t        j                         |_        |d   |_        |j                          d|d<   d|d<   |d   dk(  rQt        j                  j                  t        |d         |      }|d   |_        |j                          d|d<   d|d<   |d   dk(  rKt        j                  j                  t        |d         |      }t        |d
         }t        ||j                  |j                  |d	   |t        j                         d      }|j                          |d	   dk(  rht         j                  j                  |j                        }t#        |j                  |j$                  |d|j&                        }|j                          |j(                  r?|d	   dk(  rt+        |j(                  dd       n|d	   dk(  rt+        |j(                  dd       d|d<   d|d<   t1        |      S # t,        $ r}	d |d<   t/        |	      |d!<    d }	~	ww xY w)"Nr   r   r   r   update_type
reg_statusparticipant_refidrL  r   r  r>  )r   rL  r   r   r   update_valuez(Registration status updated successfullyr   r   r   candidate_statusz%candidate status updated successfullyadd_registrationI)r   rL  r   r   r   registrationdater+  r"  r&  )rL  hridr>  r+  r   r   SCzScreening SentECTzCoding Test SentzRegistered successfullyr  r   )r   r   r   rH   r   r   rL   r   r   r   r   r   nowcompletiondater+  rS  rJ   rQ   	createdbyr   	profileidr|   r   r   r   )
r   r   r   r   	candidateregistrationr>  job_desccall_scheduler   s
             r   updateHirelinesDatar    s   
 H
C>>V#||H%h|&<=J&,6%--11l8TgKh>i;E 2 G	+33::ZGP||AJEMlE[COPXYcPdCe	  ;  g hlgkgm	 
 /7lln+&.~&>#!!##M )*&&*<<%--11l8TgKh>i;E 2 G	#+N#;	  #J )*&&*<<%--11l8TgKh>i;E 2 G	 ((<=+jGP||AJEMlE[CKLTLLNBE G !!#L)S0&22ioo2FH$0&/ll'11#+!$$-$7$7%M "&&(&&-4,Y-@-@FVW!,/36,Y-@-@FXY#< )*& !!	  AFs   JJ1 1	K:KKc                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z#Error in save interview remark viewr   )	r   r   r   r   r   rd   r   r   r   r  s        r   interviewRemarkSaver    s     H
#>>V#zz',,"2"26":;H'1C"HV%&H\"
 !!  #@F!!#r  c                    d d dd}	 | j                   dk(  r| j                  }t        |d         }|d   }t        j                  j                  ||      }t        j                  j                  |j                        j                         j                         }||d<   d	|d
<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)Nr   r   r   r   
cand_refidr  r"  r   r   r   zError in getJDDatar   )r   r   r   rH   r   r   rJ   r   r   r   r   r   r   r   )r   r   r   r   r  r  r   r   s           r   	getJDDatar    s     H
#>>V#||H%h|&<=J!,/J!))--*z-ZIoo,,	,@GGINNPG&HV%&H\"
 !!  #/F!!#s   BB2 2	C";CC"c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zmake a star questionr   r   Error in update emailsr   )	r   r   r   r   r   rf   r   r   r   r   s       r   makeAstarQuestionr    s     H
	#>>V#zz',,"2"26":;HX&5HV%&H\" !!	  #3F!!	#r  c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z)error while getting the topics for skillsr   )	r   r   r   r   r   r%   r   r   r   )r   r   r   
skillsDatar   s        r   skillsWithTopicwithSubtopicsr  .  s     H
	#>>V#zz',,"2"26":;HJ8TJ)HV%&H\" !!	  #FF!!	#r  c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   z$Company details updated successfullyr   r   r  r   )	r   r   r   r   r   re   r   r   r   r   s       r   updateCompanyr  C  s     H
	#>>V#zz',,"2"26":;HH%EHV%&H\" !!	  #3F!!	#r  c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   zError in adding demo userr   )	r   r   r   r   r   r3   r   r   r   )r   r   r   demo_idr   s        r   demoUserr  Y  s     H
#>>V#zz',,"2"26":;H%h/G&HV%&H\" !!  #6F!!#r  c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zDemo requestedr   r   zError in requesting demor   )	r   r   r   r   r   rg   r   r   r   r   s       r   demoRequestr  p  s     H
#>>V#zz',,"2"26":;H(#/HV%&H\" !!  #5F!!#r  c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zCandidate deletedr   r   z Error in deleting the candidatesr   )	r   r   r   r   r   rh   r   r   r   r   s       r   deleteCandidater    s     H
	#>>V#zz',,"2"26":;Hh'2HV%&H\" !!	  #=F!!	#r  c                 B   d d dd}	 | j                   dk(  rLt        j                  | j                  j	                  d            }t        |      }t        |      |d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z)Error in updating candidate workflow datar   )
r   r   r   r   r   r4   r   r   r   r   )r   r   r   updated_datar   s        r   updateCandidateWorkflowr    s     H
	#>>V#zz',,"2"26":;H9(CL"<0HV%&H\" !!	  #FF!!	#s   AA. .	B7BBc                     d d dd}	 | j                   dk(  r*t        | j                        }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   Error in getting dashboard datar   )r   r   r   r5   r   r   r   )r   r   r   dashboard_datar   s        r   getDashboardGraphDatar    s     H
	#>>U"%gll3J6zBN-HV%&H\" !!	  #<F!!	#s   9A 	A<A77A<c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zSources Data Updatedr   r   r  r   )r   r   r   r   r   r   r   ri   r   r   r   r   r   r   r   r   s        r   updateSourceDatar    s     H

#>>V#%gll3Jzz',,"2"26":;H45HV%&H\" !!	  #<F!!	#rk  c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zCandidate info Updatedr   r   z Error in updating candidate infor   )r   r   r   r   r   r   r   rj   r   r   r   r  s        r   updateCandidateInfor     s     H

#>>V#%gll3Jzz',,"2"26":;H!(:67HV%&H\" !!	  #=F!!	#rk  c                 <   d d dd}	 | j                   dk(  rWt        | j                        }t        | j                        }| j                  }t        ||j                  |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   z$Error in excel mapping response datar   )
r   r   r   r   rw  r6   r   r   r   r   )r   r   r   r   rx  mapping_responser   s          r   candidateUploadFiler    s     H
>>V#W\\*D%gll3J}}H9*TWWXV/HV%&H\" !!  AFs   A&A9 9	BBBc                    d d dd}	 | j                   dk(  rt        | j                        }t        j                  | j
                  j                  d            }t        | j                        }t        j                  t        |||j                  f      }d|_        |j                          d|d<   t!        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   )targetargsTr   r   z)Error in confirmed candidate data servicer   )r   r   r   r   r   r   r   r   	threadingThreadr7   r   daemonstartr   r   r   )r   r   r   r   r   threadr   s          r   confirmedCandidateDatar    s     H
>>V#%gll3Jzz',,"2"26":;HW\\*D%%-Gz[ceielelNmnF FMLLN &'H\" !!  FFs   B+B> >	C CC c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   zData Updatedr   r   z(Error in updating dashboard display datar   )r   r   r   r   r   r   r   rk   r   r   r   r  s        r   updateDashboardDisplayFlagr  +  s     H

#>>V#%gll3Jzz',,"2"26":;H(*=-HV%&H\" !!	  #EF!!	#rk  c                    d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   z-Error in checking candidate registration datar   )	r   r   r   r   r   r8   r   r   r   )r   r   r   registration_flagr   s        r   checkJdCandidateRegistrationr  B  s     H

>>V#zz',,"2"26":;H CH M0HV%&H\" !!  JF   AA% %	B.BBc                    d d dd}	 | j                   dk(  rGt        | j                        }t        |      }t	        t        |d   d      d      }d|d	    |d
<   |S 	 t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)Nr   r   r   report_file_pathr{  zAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetr  zattachment; filename=report_file_namer  z"Error in downloading Upload Reportr   r   )	r   r   r   r9   r   r  r   r   r   )r   r   r   report_file_datar   s        r   downloadUploadReportr  X  s     H
>>V#%gll3J::F#%&894@`H 1FFVWiFjEk.lH*+O $  !!  ?Fs   AA* *	B3BBc                 n   d d d}	 | j                   j                  d      }|sd|d<   t        |d      S t        j                  j                  |      j                         }|r|j                  |d<   nd	| |d<   t        |      S # t        $ r"}t        |      |d<   Y d }~t        |      S d }~ww xY w)
N)r>  r   r   zMissing test_idr   i  r+  )
workflowidr>  zNo paper found for test_id )
r   r   r   rR   r   r   r   r   r   r   )r   r   r   bruler   s        r   get_paperidr  u  s     !40H#++//), 1HW55%%%9??A#(==HZ "=gY GHW !!  #F!!#s   .B	 AB	 		B4B//B4c                 z   t        j                  | j                  j                  dd            }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d	d      }|j                  d
d      }|j                  dd      }	|j                  dd      }
|rt	        |      nd }|rt	        |      nd }| j
                  }t        j                  j                  |      j                  }t        j                  j                  |      j                  d      }|r|j                  |      }||g }t        j                  j                         D ]_  }|j                  s|j                  s|j                  |j                  z
  }||cxk  r|k  sBn E|j!                  |j"                         a |j                  |      }|r]t$        j                  j                  |      j'                         }|r|j                  |j(                        }n|j+                         }|rCt,        j                  j                  |      j/                  dd      }|j                  |      }|r|j                  |d         }|rS|	rQt1        j2                  |d      }t1        j2                  |	d      j5                  ddd      }|j                  ||      }dd d!d"d#}|
rdd l} |j8                  d$|
      }|rm|j;                  d%      }t	        |j;                  d&            }|d'k(  r|j                  |(      }n*|d)k(  r|j                  |*      }n|j                  |+      }g }|D ]  }t        j                  j                  |j(                  ,      j'                         }|r1|j                  r%|j                  r|j                  |j                  z
  nd}t$        j                  j                  |j<                        j/                  d-d      j'                         xs d}t?        |dd      xs d}t,        j                  j                  |j(                  ,      jA                  d.d/      j'                         }|r+|j                  d.      xs d}|j                  d/      xs d} nd}d} |jB                  }!tD        j                  j                  |!0      j/                  d1d      }"tD        j                  j                  |j(                  ,      j/                  d1d      }#tG        |"      tG        |#      z   }$i }%|$D ]*  }&|&jI                         jK                         }'|'|%vs&|&|%|'<   , tG        |%jA                               }(|j!                  |j(                  |jL                  jO                  d2      |jL                  jO                  d3      |jP                  r|jP                  nd|jR                  r|jR                  nd4|jT                  r|jT                  nd4|jV                  r|jV                  nd4| d5|tY        j                  |jZ                  |jZ                        || ||(d6       
 t]        d|d7      S )8Nr   {}titler   exp_fromexp_tosourceskillsr+  	date_fromdate_tostrengthr   r3  z-dateofcreationtitle__icontains)id__inr"  )sourceid)primaryskills__icontainsr  Tr4  r   r  z%Y-%m-%d   ;   )hourminutesecond)dateofcreation__gtedateofcreation__lteDraftRejectedOfferedEmployee)DROr  z([><])?\s*(\d+)r   rJ  >)strength__gt<)strength__lt)r&  r  labelprimaryskillssecondaryskillsresumeidtagz%d-%b-%Y %I:%M %pz%Y-%m-%d %H:%M:%S z Years)r   datedate_isocoder  	firstnamelastname
experiencer"  r+  primaryskills_namesecondaryskills_nameprofilestrengthprofile_tags)r   r   )/r   r   r   r   r   r   rM   r   r   rS   r   order_byrT   allyearfromyeartor   r  rU   r   r   nonerV   r@  r   strptimereplacerematchgroupr+  getattrr   rD  r^   r?  lowerstripdateofcreationstrftimeprofilecoder  rJ  rK  r   r+  r   ))r   r   r  r   r!  source_coder#  r+  r$  r%  r&  
login_userr   filtered_profilesmatched_idsexpyears
source_objskill_profile_idsstart_datetimeend_datetime
status_maprX  rY  operatorvaluefinal_outputprofilesource_valuestrength_valskills_data
primary_sksecondary_sk	resume_idresume_tagsrP  combined_tagsunique_tagsrE  
normalized
final_tagss)                                            r   filter_profiles_apir{    s   ::gll&&vt45DHHWb!Exx
B'HXXh#F((8R(KXXh#FXXh#Fb)Ihhy"%Gxx
B'H !)s8}dH"S[F
 J||j1;;J...DMMN_`-44e4L 2$,,002 	6C||



S\\1u..&&s}}5		6 .44K4H^^**k*:@@B
 1 8 8*-- 8 P 1 6 6 8 !!((&(I[4[0 	 .44<M4N-44F1I4FW!**9jA((*=EEBr F 
 .44 . , 5 
 	J +X6{{1~HA'E3$5$<$<%$<$P!S$5$<$<%$<$P! %6$<$<e$<$L!
 L$ =  ''...DJJL/2s||

cll*XY NN!!W%5%5!6[t[,UW 	
 w
A6;! !!((7::(>VO%67UW 	 $9?RJ&??+<=CLJL$$	kk(()(<HHUYHZ{{))GJJ)?KKEX\K][)D,>>  	.C**,J,*-J'	. +,,./
 	**334GH..778KL+2+>+>G''B&-mmW]]/6/@/@**c,3,<,<((#"G6*"*..w~~w~~N",$0+&
 	]=~ q,?@@rd  c                     t         j                  j                  |      }t        j                  |j
                        j                  d      }t        dd| i      S )NrC  r   pdf_datazdata:application/pdf;base64,)rY   r   r   base64	b64encodefilecontentr   r   )r   ridresume_filefile_base64s       r   getResumeFiler  7  s]     $$((#(6K"";#:#:;BB7KK2;-@  rd  c                 @   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   z%Error in getting filtered resume datar   )r   r   r   r   r   r   r   r:   r   r   r   )r   r   r   	user_dataresumes_datar   s         r   getFilterResumesr  C  s     H>>V#zz',,"2"26":;H!',,/I(8<L+HV%&H\" !!  BFr   c                    d d dd}	 | j                   dk(  rFt        j                  | j                  j	                  d            }t        |d          d|d<   d|d<   t        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   ru  rQ  r   r   Error in deleting Resumer   )	r   r   r   r   r   r;   r   r   r   r   s       r   deleteResumer  ]  s     H
>>V#zz',,"2"26":;HXk23(HV%&H\" !!  5Fr   c                 @   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY w)	Nr   r   r   r   r   r   r  r   )r   r   r   r   r   r   r   rm   r   r   r   )r   r   r   r  add_profiler   s         r   addResumeProfiler  u  s     H
>>V#zz',,"2"26":;H!',,/I,Xi@K*HV%&H\" !!  5Fr   c                 x   d d dd}	 | j                   dk(  rut        j                  | j                  j	                  d            }| j
                  j	                  d      }t        | j                        }t        |||       d|d<   d|d<   t        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   
attachmentrQ  r   r   zError in saving Profile Detailsr   )r   r   r   r   r   rw  r   r   rl   r   r   r   r   r   r   rx  r  r   s         r   
addProfiler    s     H
>>V#zz',,"2"26":;H}}((6H!',,/I(95(HV%&H\" !!  <F   BB 	B9 B44B9c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  
profile_idrQ  r   r   z!Error in updating Profile Detailsr   )
r   r   r   r   r   rn   r~   r   r   r   r   s       r   updateProfileDetailsr    s     H
>>V#zz',,"2"26":;H"8,#x/DE(HV%&H\" !!  >F   A!A4 4	B=BBc                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z+Error in updating Profile Education Detailsr   )
r   r   r   r   r   ro   r~   r   r   r   r   s       r   updateProfileEducationr    s     H
>>V#zz',,"2"26":;H$X.#x/EF(HV%&H\" !!  HFr  c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z,Error in updating Profile Experience Detailsr   )
r   r   r   r   r   rp   r~   r   r   r   r   s       r   updateProfileExperiencer    s     H
>>V#zz',,"2"26":;H%h/#x/EF(HV%&H\" !!  IFr  c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z*Error in updating Profile Projects Detailsr   )
r   r   r   r   r   rq   r~   r   r   r   r   s       r   updateProfileProjectsr    s     H
>>V#zz',,"2"26":;H#H-#x/EF(HV%&H\" !!  GFr  c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z(Error in updating Profile Awards Detailsr   )
r   r   r   r   r   rr   r~   r   r   r   r   s       r   updateProfileAwardsr    s     H
>>V#zz',,"2"26":;H!(+#x/EF(HV%&H\" !!  EFr  c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z-Error in updating Profile Certificate Detailsr   )
r   r   r   r   r   rs   r~   r   r   r   r   s       r   updateProfileCertificatesr  '  s     H
>>V#zz',,"2"26":;H'1#x/EF(HV%&H\" !!  JFr  c                 2   d d dd}	 | j                   dk(  rRt        j                  | j                  j	                  d            }t        |       t        |d          d|d<   d|d	<   t        |      S # t        $ r}d
|d<   t        |      |d<    d }~ww xY w)Nr   r   r   r   r  r  rQ  r   r   z(Error in updating Profile Skills Detailsr   )
r   r   r   r   r   rt   r~   r   r   r   r   s       r   updateProfileSkillsr  ?  s     H
>>V#zz',,"2"26":;H!(+#x/EF(HV%&H\" !!  EFr  c                 X   d d dd}	 | j                   dk(  ret        | j                        }|j                  }t	        j
                  | j                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   r   rQ  r   r   z(Error in adding Profile Activity Detailsr   )r   r   r   r   r   r   r   r   ru   r   r   r   )r   r   r   useridr   r   s         r   addProfileActivityr  W  s     H
>>V#W\\*D77Fzz',,"2"26":;H#HV4(HV%&H\" !!  EFs   A4B 	B)B$$B)c                    d d dd}	 | j                   dk(  r| j                  j                         }| j                  j	                  d      }t        |d         }t        j                  j	                  |      j                  }|r}|j                         }t        j                  j                  |j                        d   j                         }|dv r	 t        |      }n|dk(  r|}nt!        d	      |j                  }	|}
nd }	d }
d
}d|v rqt"        j                  j%                  ||d         j'                         }|r|j(                  }n0t#        ||d   |d         }|j+                          |j(                  }t-        ||	d |d      }|j+                          |
r(t/        |j(                  |	|
      }|j+                          d|d<   d|d<   t3        |      S #  |}Y xY w# t         $ r}d|d<   t1        |      |d<    d }~ww xY w)Nr   r   r   r  r!  r"  )z.docz.docxz.pdfzUnsupported file formatr   zsource-code)r   rI  )r   rI  r@  P)r+  ra  mailidr   r+  )rD  ra  r  zResume uploaded successfullyr   r   r   zError in candidateProfiler   )r   r   dictrw  r   r   rJ   r   r   r  rU  rV  splitextr  r\  r   r   rU   r   r   r   rS  rZ   rY   r   r   )r   r   r   fileObjr   r   file_binaryext
pdf_binaryra  	file_datara  r"  
new_source
new_resumer  r0  s                    r   candidateProfiler  q  s    H
R>>V#||((*Hmm''5G !)!45E ,,,6@@J%llngg&&w||4Q7==?++1%?%L
 F]!,J $$=>>"<<&	 	
 K(..R_I`.affh"())K "(",'6 ( 7"J
 OO%",--K  &#&J OO (']]% )
   "=HV%&H\" !!A1%0
t  6Hs1   CG' G !C2G' G$"G' '	H	0HH	c                     d d dd}	 | j                   dk(  rt                d|d<   d|d<   t	        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   rQ  r   r   r   z#Error in getting resume from emailsr   )r   r   r   r   r   )r   r   r   s      r   getMailResumesr    sy     H
	>>U"#%(HV%&H\" !!  @Fs   #6 	AAAc                 z   d d dd}	 | j                   j                  d      }|st        d       d|d<   t        |      S t        j
                  j                  |      }|j                  }|j                  }|j                  }t        j
                  j                  |      }t               d   d	   }d
}	t        ||	      }
||||j                  d}t        j                  |
|ddi      j                         }|j                  d      dk7  rt        d       d|d<   d|d<   d|i|d<   | j                   }t"        j
                  j                  |      j$                  }t'        |dd|       t        |      S # t(        $ r7}t        dt+        |             t+        |      |d<   Y d }~t        |      S d }~ww xY w)Nr   r   r  z Missing profile_idprofile_id missingr   r"  r   r   z/api/get-welcome-mail)	companyIdtoEmail
first_namecompanyNameContent-Typeapplication/jsonr   headersr   r   z ACERT email process failedzACERT email process failedr   r   r'  E1zThank you notez  Exception in sendwelcomemail():)r   r   r   r   rS   r   rJ  r   r   rX   r   r   r  r   r   r   r   rM   r   r|   r   r   )r   r   r  ro  r  to_emailr   r  r   r   r   payload	acert_resr   acvityuseridr   s                   r   sendwelcomemailr    s    H<#\\%%l3
 '( 4HW)) //%%%4 &&
==&&
 //%%%4 !{8,W5*lH-
 $$"<<
 MM#%78
 $&	 	 ==&!+/0 <HW!"#X.\\||''d'366Z-=lK !!  #0#a&9F!!#s   7E:  D/E: :	F:#F55F:c                 N   ddd}	 | j                   j                  d      }|sd|d<   t        |      S t        j                  j                  |d      j                         }||d	<   d
|d<   t        |      S # t        $ r#}t        |      |d<   t        |      cY d }~S d }~ww xY w)NFr   )
email_sentr   r  r  r   r  )r  activitycoder  r   r   )	r   r   r   r[   r   r   rW  r   r   )r   r   r  rW  r   s        r   check_welcome_mail_statusr  4	  s    #15H&\\%%l3
  4HW)) ((//  0 
 &( 	
 "(!"H%% &FH%%&s#   ,A8 AA8 8	B$BB$B$c                 ^   d d dd}d }	 | j                   dk(  r| j                  j                  d      }t        | j                        }t        ||      }t        j                  j                  |d         }t        |d   d      5 }t        |j                         d      }d	|d
    d|d<   |cd d d        |r6t        j                  j                  |      rt        j                  |       S S S |r?t        j                  j                  |      r t        j                  |       t!        |      S t!        |      S # 1 sw Y   UxY w# t        $ r}d|d<   t        |      |d<   Y d }~yd }~ww xY w# |r6t        j                  j                  |      rt        j                  |       w w w xY w)Nr   r   r   pidrb  r{  r|  r  r}  r~  r  r  zError in downloading profiler   r   )r   r   r   r   r   r<   rU  rV  normpathr  r   r  rW  r[  r   r   r   )r   r   pdf_file_pathr  r  r  r  r   s           r   downloadBrandedProfiler  N	  sy   t1=HM)>>V# ))%0J!',,/I-jCHGG,,Xk-BCMh{+T2  h'FWX4J8T_K`Jaaf2g./	    ww~~m,		-( - ww~~m,		-(!!<!!     #9F#
 ww~~m,		-( - sB   A<E	 )D=/	E	 =EE	 		E/E*%E2 *E//E2 2:F,c           
         d d dd}	 t        j                  | j                  j                  d            }|j                  d      }|j                  d      }t        j
                  j                  ||      }|j                         sg |d<   d|d<   t        |      S g }|D ]s  }|j                  |j                  |j                  |j                  |j                  |j                  r|j                  j                  d	      nd |j                   d
       u |j#                         }|j$                  |d<   |j&                  |d<   ||d<   d|d<   t        |      S # t(        $ r#}	t+        |	      |d<   t        |      cY d }	~	S d }	~	ww xY w)Nr   r   r   user_idr   )r  r   r   r   z%H:%M:%S)r   r  r   startday	starttimehoursweekoff1weekoff2r   )r   r   r   r   r\   r   r   rW  r   r   r   r  r   r  r  r_  r  r   r  r  r   r   )
r   r   r   r  r   rowsr   rr   r   s
             r   
getworkcalr  k	  sm    H,&zz',,**623((9%XXl+
 %%W
%K {{}!HV%&H\"))  
	AKKdd(([[JJABQ[[11*=RV	 	
	 

$~~$~~!"H%% &FH%%&s%   BE B<E 	F$F<FFc                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in saving Detailsr   )	r   r   r   r   r   rv   r   r   r   r   s       r   saveworkcalr  	  s     H#>>V#zz',,"2"26":;H (#(HV%&H\" !!	  #4F!!	#r  c                 P   d d dd}	 t         j                  j                  |      }|j                          d|d<   d|d<   t        |      S # t         j                  $ r d|d	<   d|d<   Y t        |      S t
        $ r'}t        |      |d	<   d|d<   Y d }~t        |      S d }~ww xY w)
Nr   r   r"  r   r   zDeleted Successfullyr   zRecord not foundr   )r\   r   r   deleteDoesNotExistr   r   r   )r   r   r   objr   s        r   delete_work_calr  	  s     H#oo!!R!( 	

!"1 !!  #.!" !!	  #F!"!!	#s   :A B%6B%>B  B%c                     dd d}	 t        j                  | j                  j                  d            }|j                  d      }|j                  d      }|j                  d      }|j                  dd      }t        j
                  j                  |	      }|d
k(  r||_        ||_        ||_        |j                          |d
k(  rt        j
                  j                  |j                  	      }t        j
                  j                  |	      }	t               d   d   }
d}t        |
|      }|j                  |	j                  |	j                   |j"                  |j                   |j$                  d}t'        j(                  ||ddi      j                         }|j                  d      dk7  rd|d<   t+        |      S d|d<   t+        |      S # t,        $ r"}t/        |      |d<   Y d }~t+        |      S d }~ww xY w)Nr   r   r   r   JdIDr+  hiring_manager_idcommentsr   r"  Fr   r   z/api/get-approval-mail)r  r  r  jdTitlehrNamejdIdr  r  r  r   r   zACERT approval mail failedr   )r   r   r   r   rJ   r   hiringmanager_idapproval_statusr  rS  rM   r  r   r   r   r   r  r  r   r   r   r   r   r   )r   r   r   r   r+  r  r  r)  hrhiringmanagerr   r   r   r  r  r   s                   r   update_jd_statusr  	  s   $/H8#zz',,**623 (# HH%8988J+ __  E * S="3B#
	 S=!!R\\!2B<<++/@+AM %;x09L/H,1C  \\(..+0088''G !');< df	  }}\*a/$@!#H--!"
 !!  #F!!#s   F:G G 	G=G88G=c                 F   d d dd}t        d       	 | j                  dk(  rCt        j                  | j                  j                  d            }t        |      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   scheduleCandidateInterviewr   r   r   r   zError in Scheduling Interviewr   )
r   r   r   r   r   r   rx   r   r   r   r  s        r   r  r  5
  s    
 H
 

&'
#>>V#zz',,"2"26":;H.x8C"HV%&H\"
 !!  #:F!!#s   AA0 0	B 9BB c                 z   d d dd}	 | j                   dk(  rjt        j                  | j                  j	                  d            }|d   }t        |      }t        | j                        }t        ||      }||d<   d|d<   nt        d      S 	 t        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   r  r   r   r  r  r   )r   r   r   r   r   r   r   r   rw   r   r   r   r   )r   r   r   r  enc_candidate_idr  r  r   s           r   scheduleCandidateInterviewLinkr  M
  s     H
>>V#zz',,"2"26":;H#N3L+L9!',,/I56FyQF%HV%&H\"():;; # !!  <Fs   BB 	B:!B55B:c                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   z"Error in assigning Recruiter to JDr   )	r   r   r   r   r   ry   r   r   r   r   s       r   jdRecruiterAssignr  h
  s     H#>>V#zz',,"2"26":;H)(HV%&H\" !!	  #?F!!	#r  c                    d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in updating full profiler   )	r   r   r   r   r   rz   r   r   r   r   s       r   auto_fill_profiler  
  s     H>>V#zz',,"2"26":;H)(HV%&H\" !!	  ;Fr  c                    dd d d}	 t        | j                        }t        | j                        }|j                  }|j                  }| j
                  j                  d      }| j
                  j                  d      }t        |||||      }||d<   d|d<   t        |      S # t        $ r"}	t        |	      |d	<   Y d }	~	t        |      S d }	~	ww xY w)
Nr   r   r   r   	recruitermonthr   	user_rolelogged_recruiter_idselected_recruitermonth_valuer   r   r   r   )r   r   r   r   r   r   r   r=   r   r   r   
r   r   r   r  r  r  r  r   r  r   s
             r   recruiter_dashboard_filterr  
  s     H#!',,/
gll+	NN	'll$[[__[9kkoog.3! 31#
 *!"
 !!  #F!!#s   BB% %	C.CCc                 \   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in add new workspacer   )r   r   r   r   r   r   r   r{   r   r   r   r   r   r   r  r   s        r   addWorkspacer  
  s     H#>>V#zz',,"2"26":;H!',,/I8I.(HV%&H\" !!	  #7F!!	#rk  c                 \   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z Error in getting jd Profile Datar   )r   r   r   r   r   r   r   r>   r   r   r   )r   r   r   r  jd_profiles_datar   s         r   jdProfileDatar  
  s     H#>>V#zz',,"2"26":;H!',,/I 0) D/HV%&H\" !!	  #=F!!	#rk  c                 \   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||      }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z!Error in shortlisting the Profiler   )r   r   r   r   r   r   r   r?   r   r   r   )r   r   r   r  	shortlistr   s         r   shortlistProfiler  
  s     H#>>V#zz',,"2"26":;H!',,/I/CI(HV%&H\" !!	  #>F!!	#rk  c                    d d dd}	 | j                   dk(  rt        | j                        }t        | j                        }|j                  }|j
                  }| j                  j                  d      }| j                  j                  d      }t        d|       t        |||||      }||d<   d	|d
<   t        |      S # t        $ r'}	d|d<   t        |	      |d<   Y d }	~	t        |      S d }	~	ww xY w)Nr   r   r   r  r  r   r  r   r   r   z%Error in getDashBoardDataService viewr   )r   r   r   r   r   r   r   r   r   r@   r   r   r   r  s
             r   dashBoardViewr    s     H
#>>U"%gll3J!',,/I!I"+,,!(!=!++//'2K-,1Z 31kKN  .HV%&H\" !!	  #BF!!	#s   B-C   	C0	C++C0c                 
   	 | j                   j                  d      }t        j                  j	                  |      j                         }|r{|j                  xs d|j                  xs d|j                  xs d|j                  xs d|j                  xs d|j                  xs d|j                  xs dd}t        d|d d      S t        dd dd      S # t        $ r"}t        dd t        |      d      cY d }~S d }~ww xY w)Nr  r"  r   )r&  educationscoreawardsscorecertificatesscoreexperiencescoreprojectsscoreskillsscorer  r   zProfile not found)r   r   rS   r   r   r   r&  r  r  r  r  r  r  r   r   r   )r   r  ro  statsr   s        r   get_profile_strengthr  G  s    N[[__\2
//((J(7==? $,,1")"8"8"=A&227a%,%>%>%C!#*#:#:#?a!(!6!6!;!&227aE  q%$ OPP1dEXYZZ N1dSVLMMNs$   CC C 	D C=7D=Dc                 0   d d dd}	 | j                   dk(  rCt        j                  | j                  j	                  d            }t        |       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in updating workspacer   )	r   r   r   r   r   r}   r   r   r   r   s       r   updateWorkspacer  a  s     H#>>V#zz',,"2"26":;Hh'(HV%&H\" !!	  #8F!!	#r  c                 :   d d dd}	 t        | j                        }t        j                  | j                  j                  d            x}}t        |j                  |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wr  )r   r   r   r   r   r   rA   r   r   r   r   r  s         r   addNewClientsr  |  s     H

&"jj)9)9&)ABB8&t~~h?#!" !!	  7Fr  c                 :   d d dd}	 t        | j                        }t        j                  | j                  j                  d            x}}t        |j                  |      }||d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d<    d }~ww xY wr  )r   r   r   r   r   r   rB   r   r   r   r   r  s         r   changeClientStatusr    s     H

&"jj)9)9&)ABB8,T^^HE#!" !!	  7Fr  c                    	 | j                   dk(  rt        | j                        }t        j                  | j
                  j                  dd            }|j                  d      }|j                  d      }|j                  ||d}t        d|       t        |      }t        d|d	   |d
   |d   d      S t        dg dd      S # t        $ r"}t        dg t        |      d      cY d }~S d }~ww xY wNr   r   r  r$  r%  )r  	from_dateto_dater   r   r  r   )r   r  r   r   r   zInvalid request methodr  )r   r   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   r  r   r   resultr   s           r   recruiters_performancer#    s   $>>V#W\\*D::gll..vt<=D-Ihhy)G ~~&"H
 *X&1(;F#K0!),v	!   -
  	  V
  	$   B4C 7C 	C1C,&C1,C1c                 F   	 | j                   j                  dd      j                         }t        j                  j                  |      j                  dd      d d }t        |      }t        |d      S # t        $ r }t        d	t        |      i      cY d }~S d }~ww xY w)
Nqr   r(  r   r  
   F)safer   )r   r   r]  r]   r   r   r   r?  r   r   r   )r   queryqsr   r   s        r   search_jd_libraryr+    s    R(..0%%" & 

&w
% BxDu-- SV
  	s   A4A7 7	B  BB B c           	      J   	 | j                   j                  d      }t        j                  j                  |      }|j                  |j
                  xs d|j                  xs d|j                  xs d|j                  xs d|j                  xs d|j                  r|j                  ng |j                  r|j                  ng d}t        d|d      S # t        j                  $ r t        ddd	      cY S t        $ r!}t        dt        |      d
      cY d }~S d }~ww xY w)Nr   r"  r   )r  descriptionr   min_expmax_expwork_locationprimary_skillssecondary_skillsr   )r+  r   r   zJD not found)r+  messager+  r   )r   r   r]   r   r  r-  r   r.  r/  r0  r1  r2  r   r  r   r   )r   r   r)  r   r   s        r   jd_library_detailr5    s   %""e", XX>>/RGGMrzz'Rzz'R--3353D3Db//"797J7J 3 3PR	
 
  	
 !! %
  	
  V
  	s$   CC !D"9D"DD"D"c           	      &   	 | j                   j                  dd      j                         }| j                   j                  dd      j                         }| j                   j                  dd      j                         }| j                   j                  dd      j                         }| j                   j                  dd      j                         }| j                   j                  d      }t        | j                        }t        d|       d	}d	}	d	}
d }d }d }|rWt        j                  j                  ||
      }|r|j                  |      }|}|rd}	t        |j                  dd            }|rWt        j                  j                  ||      }|r|j                  |      }|}|rd}
t        |j                  dd            }|s|s|rt        j                  j                  |      j                  t        |||      t        |||      z        }|r|j                  |      }|}|rd}t        |j                  dd            }t        ||	|
|||d      S # t        $ r!}t        dt        |      d      cY d }~S d }~ww xY w)NrJ  r   
middlenamerK  r   mobiler  r   F)email__iexactr   r"  Tr`  r4  )r8  r   r3  )firstname__iexactmiddlename__iexactlastname__iexact)name_existsemail_existsmobile_existsname_profile_codeemail_profile_codemobile_profile_coder   r4  )r   r   r]  r   r   r   rS   r   r   excluder?  r@  r   r   r   r   )r   r   middler   r   r8  r  r   r=  r>  r?  r@  rA  rB  	email_obj
mobile_objname_objr   s                     r   validate_profilerH    s   [R0668r288:{{z2.446,2242.446[[__\2
!',,/
 	l:& !" ..Uz.\I%---<	 "I#%)))-d)C&"  //v:/XJ'//:/>
 $J $&***=t*D'# Fd---ELLEfW[\DVV[\]H #++z+:  H"$(((T(B%!
 &(*!2"4#6
  	  V
  	s   I#I& &	J/JJJc                 p   d d dd}	 | j                   dk(  rct        | j                        }t        j                  | j
                  j                  d            }t        ||j                        }||d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d<   Y d }~t        |      S d }~ww xY w)	Nr   r   r   r   r   r   z!Error in getting Job Board Configr   )r   r   r   r   r   r   r   rD   r   r   r   r   )r   r   r   r   config_datar   s         r   jobBoardConfigrK  m  s     H#>>V#W\\*Dzz',,"2"26":;H/HK*HV%&H\" !!	  #>F!!	#r  c                 p   d d dd}	 | j                   dk(  rct        | j                        }t        j                  | j
                  j                  d            }t        ||j                         d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   z(Error in getting saving Job Board Configr   )r   r   r   r   r   r   r   r   r   r   r   r   ri  s        r   saveJobBoardConfigrM    s     H#>>V#W\\*Dzz',,"2"26":;H $..9(HV%&H\" !!	  #EF!!	#r  c                 \   d d dd}	 | j                   dk(  rYt        | j                        }t        j                  | j
                  j                  d            }t        ||       d|d<   d|d<   t        |      S # t        $ r'}d|d<   t        |      |d	<   Y d }~t        |      S d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in saving JD Job Boardsr   )r   r   r   r   r   r   r   r   r   r   r   ri  s        r   saveJDJobBoardsrO    s     H#>>V#W\\*Dzz',,"2"26":;Hht,(HV%&H\" !!	  #:F!!	#rk  c                 x   d d dd}	 | j                   dk(  rut        j                  | j                  j	                  d            }| j
                  j	                  d      }t        | j                        }t        |||       d|d<   d|d<   t        |      S # t        $ r}d	|d<   t        |      |d
<    d }~ww xY w)Nr   r   r   r   
resumefilerQ  r   r   zError in adding Resumer   )r   r   r   r   r   rw  r   r   r   r   r   r   r  s         r   	addResumerR    s     H
>>V#zz',,"2"26":;H}}((6H!',,/I)4(HV%&H\" !!  3Fr  c                    d d dd}	 | j                   j                  d      }t        j                  j	                  t
        dd      }t        j                  |d       t        j                  j                  |j                        d   }|j                  d	      d   }| d
}t        j                  j	                  ||      }t        j                  dddddddddd|gt        j                  t        j                  t        j                        }|j                         D ]/  }	|j                          n|j                   j#                  |	       1 |j                   j%                          |j'                          |j(                  dk7  r3|j*                  j-                         j/                         }
t1        |
      t        j                  j	                  t
        dd| d      }t        j                  j3                  |      rt5        ||      }|r*t7        t9        |      d      }d}|dk  rd}n|dk  rd}nd}nd }d }t:        j<                  j                  |      }||_        ||_         |jC                          ||d<   d|d <   n
d!|d<   d|d <   tG        |      S # t0        $ r"}tE        |      |d"<   Y d }~tG        |      S d }~ww xY w)#Nr   r   speaker_audiorO  rP  T)exist_okr   rI  z.wavffmpegz-yz-fwebmz-izpipe:0z-ac1z-ar16000)stdinstdoutstderrz_profileaudio.wavrJ  r   U   r  Z   MHr"  r   r   zProfile audio not foundr   )$rw  r   rU  rV  r   r   makedirsr  r  rR  
subprocessPopenPIPEDEVNULLchunkspollrZ  writeclosewait
returncoder\  r  r   r   rW  r	   roundfloatrQ   r   
audioscore
audiolevelrS  r   r   )r   r   
audio_filefolder_path	base_name
scheduleidwav_filenamewav_pathprocesschunkr   profile_file_pathresult_scorelevelcall_schr   s                   r   uploadAudioFiler|    s    HN#]]&&7
ggll

 	K$/GG$$Z__5a8	__S)!,
#D)77<<\:""fhsw //%%??
  &&( 	'E||~)MM&	'
 	"NN'')002EE""GGLLl+,	
 77>>+,():8DL$U<%8;"$E!B&EE  $#++//:/>H".H"'HMMO+HV%&H\"8HV%&H\"
 !!  #F!!#s   JJ" "	K+KKc                    	 | j                   dk(  rt        | j                        }t        j                  | j
                  j                  dd            }|j                  d      }|j                  d      }|j                  ||d}t        d|       t        |      }t        d|d	   |d
   |d   d      S t        dg dd      S # t        $ r"}t        dg t        |      d      cY d }~S d }~ww xY wr  )r   r   r   r   r   r   r   r   r   rE   r   r   r   r!  s           r   source_performancer~  6  s   $>>V#W\\*D::gll..vt<=D-Ihhy)G ~~&"H
 *X&-h7F#K0!),v	!   -
  	  V
  	r$  c                 @   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||       d|d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   r   rQ  r   r   z!Error in Updating Resume Templater   )r   r   r   r   r   r   r   r   r   r   r   r  s        r   updateResumeTemplater  `  s     H
>>V#zz',,"2"26":;H!',,/I"8I6(HV%&H\" !!  >Fr   c                    d d dd}	 | j                   dk(  r| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }t	        ||||       d|d	<   d
|d<   t        |      S # t
        $ r}d|d	<   t        |      |d<    d }~ww xY w)Nr   r   r   r  r   job_idresumerQ  r   r   r   zError in applying Jobr   )r   r   r   rw  r   r   r   r   )r   r   r  r   r   rQ  r   s          r   addResumeFromJobPager  z  s     H
>>V#<<##F+DLL$$W-ELL$$X.E **84J"4eZ@(HV%&H\" !!  2Fs   BB& &	C/CCc                 4   	 | j                   dk(  rOt        j                  | j                  j	                  d            }t        | j                        }t        ||       t        ddi      S # t        $ r!}t        dt        |      d      cY d }~S d }~ww xY w)Nr   r   r   r   r   r  )r   r   r   r   r   r   r   r   r   r   r   )r   r   r  r   s       r   saveresumetagsr    s    @>>V#zz',,"2"26":;H!',,/I Xi0\1-.. @1s1v>??@s   A*A- -	B6BBBc                 |   	 t         j                  j                  |      j                         }|r|j                  nd }t
        j                  j                  |      j                  dd      }t
        j                  j                  |      j                  dd      }t        |      t        |      z   }i }|D ]*  }|j                         j                         }	|	|vs&|||	<   , t        |j                               }
t        d|
d      S # t        $ r!}t        dt        |      d	      cY d }~S d }~ww xY w)
NrC  rE  Tr4  r?  r   r   tagsr   r  )rS   r   r   r   r   r^   r@  r?  r\  r]  r   r   r   r   )r   ru  ro  r  rv  rP  rw  rx  rE  ry  all_tagsr   s               r   getresumetagsr    s/   !//(()(<BBD#*WZZ
kk(()(<HHUYHZ{{))J)?KKEX\K][)D,>>  	.C**,J,*-J'	. **,- 
  	  V
  	s$   C D #-D 	D;D60D;6D;c                    	 t        j                  | j                  j                  d            }|j                  d      }|j                  dg       }|st	        ddd      S t
        j                  j                  |      j                  dd	
      }|D ci c]1  }|j                         j                  dd      j                         |3 }}|D ]i  }|j                         }|s|j                         j                  dd      j                         }||vsIt
        j                  j                  ||       k t	        ddi      S c c}w # t        $ r-}	t        d|	       t	        dt        |	      d      cY d }	~	S d }	~	ww xY w)Nr   r  r  r   Profile ID missingr  r?  rE  Tr4  rF  r   )rE  r  r   r   zError saving profile tags:)r   r   r   r   r   r^   r   r   r@  r\  rW  r]  creater   r   r   )
r   r   r  r  existing_tagsrE  normalized_existingtag_namery  r   s
             r   saveprofiletagsr    sw   "@zz',,**623XXl+
xx# q;O PQQ **Z*@LLUY]L^
 %
 IIKR(..0#5
 

  
	FH~~'H!)11#r:@@BJ !44""x*"E
	F \1-..#
&  @*A.1s1v>??@s=   A E #5E 6EAE /E E 	F"F;FFc                    	 t         j                  j                  |      }|st        ddd      S |j                  }t
        j                  j                  |      j                  dd      }t
        j                  j                  |	      j                  dd      }t        |      t        |      z   }i }|D ]*  }|j                         j                         }	|	|vs&|||	<   , t        |j                               }
t        d
|
       t        d|
d      S # t        $ r!}t        dt        |      d      cY d }~S d }~ww xY w)Nr"  r   r  r  rC  rE  Tr4  r?  rz  r   r  )rS   r   r   r   rD  r^   r   r@  r?  r\  r]  r   r   r   r   )r   r  ro  ru  rv  rP  rw  rx  rE  ry  rz  r   s               r   getprofiletagsr    sD   #//%%%4q;O PQQ $$	 kk(()(<HHUYHZ{{))J)?KKEX\K][)D,>>  	.C**,J,*-J'	. +,,./
l:&
  	
  V
  	s)   /D B.D !9D 	E$E :E Ec                    	 t        j                  | j                        }|j                  d      }t	        d|       |j                  d      }|j                  d      }|st        ddd      S |rt        j                  j                  ||      j                          t        j                  j                  |      j                  d	d
      j                         }|r/t        j                  j                  ||      j                          |rt        j                  j                  ||      j                          t        j                  j                  |      j                  dd
      j                         }|r/t        j                  j                  ||      j                          t        ddi      S # t        $ r!}t        dt        |      d      cY d }~S d }~ww xY w)Nr  ru  rE  r   zTag missingr  )r  tag__iexactr"  rD  Tr4  )rD  r  rC  r   r   r   )r   r   r   r   r   r   r^   r   r   r  rS   r@  r   r   r   )r   r   r  ru  r  linked_resume_idlinked_profile_idr   s           r   
deletetagsr  "  s   %zz',,'XXl+
l:&HH[)	88E?q= IJJ KKIPPR !( 6 6* 6 E Q QR\cg Q h n n p"",<"RYY[ KK	xHOOQ ")!7!7!7!K!W!WX\cg!W!h!n!n!p ""->8"T[[]\1-.. V
  	s%   A-F? 0EF? ?	G)G$G)$G)c                 @   d d dd}	 | j                   dk(  rYt        j                  | j                  j	                  d            }t        | j                        }t        ||       d|d<   d|d<   t        |      S # t        $ r}d|d<   t        |      |d	<    d }~ww xY w)
Nr   r   r   r   rQ  r   r   zError in Updating Career JDr   )r   r   r   r   r   r   r   r   r   r   r   r  s        r   publishCareerJDr  L  s     H
>>V#zz',,"2"26":;H!',,/Ihy1(HV%&H\" !!  8Fr   (  r   rU  r   r   r  timer  rX  r~  urllib.parser   r   django.httpr   r   app_api.functions.enc_decr   r   #app_api.functions.voice_comparisionr	   hirelines.settingsr
   r   rest_framework.decoratorsr   r   r   r   r   django.views.decorators.csrfr   allauth.account.utilsr   allauth.accountr   r   app_api.functions.masterdatar   r   r   django.db.modelsr   hirelines.metadatar   r   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   rB   rC   rD   rE   modelsrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   functions.databaser_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   app_api.functions.constantsr   r   app_api.functions.email_resumer   functions.doc2pdfr   r   r   r   r   r   r   r   r   r   r  r	  r   r  r  r  r  r  r1  rD  rF  rc  rg  rj  ro  rr  ru  ry  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  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  r  r  r  r  r  r  r  r  r#  r+  r5  rH  rK  rM  rO  rR  rb  r|  r~  r  r  r  r  r  r  r  r   rd  r   <module>r     s8   
 	      	     2 @ = 2 Z Z I I 4 / < P P  8v v v v v v v v v v v v
 i  i  i  i  i  i  iN N N N N N N N N N N \ B 2 9	6(B"    "" 	6(B"    "& 	6(B"    "$ 	6(B"    "< 
6(" "$ 
6(" "( 
6(" "( 
6(" "( 
6(" "& 
5'" "* 
5.=" ="@ 
6(" "h 
6(" "2 
5'" "0 
6(" ",i* 
6(" ". 
6(" ". 	6(B0"    0"f 
5.u" u"r 
6(B"   "& 
5&/B1   18 
6(" "0 
6(" "( 
6(" ", 
6(" "* 
6(" "( 
6(" ", 
5'B"   "* 
6(" "2 
6(" "( 
6(B?"   ?"F 
5' "  "F 
5.5" 5"pH 
6(" "( 
6(" "( 
6(BJ"   J"Z 
6(" "* 
6(B"   "0 
6(" "( 
6(" "( 
6(" "* 	6(B"    "& 	6(B"    "$ 
6(" "* 
6(" "* 
5'" "* 
6(" "* 
6(" ", 
6(" "0 
6(" "8 
6(" ", 
6(" "* 
6(" "8 
5'B"   "(hAV 
5'  
6(" "2 
6(" ". 
6(" "2 
6(" "4 
6(" "0 
6(" "0 
6(" "0 
6(" "0 
6(" "0 
6(" ". 
6(" ". 
6(" "2 	6(BZ"    Z"z 
5'" "* 
6(F" F"V 
6(& &2 
6(" "8 
6(3& 3&n 
6(" "2 
6(" "l 
6(=" ="@ 
6(B"   "* 
6(" "4 
6(" "0 
6(" ". 
5' "  "F 
6(" "8 
6(" "4 
6(" "2 
5'" "n 
5'N N2 
6(" "4 
6(" "0 
6(" "* 
6(% %T 
5' $ 
5'   F 
5'\ \~ 
6(" "4 
6(" "4 
6(" "4 
6(" "6 	6(W" W"r 
6(% %R 
6(" "2 	6(B"    "4@""T$@N%P&T 
6(" "rd  