def validateRequest(request): headerValidation = True ''' BOTO3 TO VALIDATE THE HEADER IF NEEDED check the environment flag ("isHeaderValidationRequired") ''' if ('candidateToken' not in request["body"] and 'testMode' not in request["body"] and environ.get('isHeaderValidationRequired')): requestBody = WOHeader.run(request) if (requestBody['authenticationCode'] != "200"): headerValidation = False else: requestBody = request['body'] ''' VALIDATE CANDIDATE TOKEN ''' # if('candidateToken' in requestBody): # candidateInfo = validateCandidate(requestBody) # requestBody['candidate'] = candidateInfo response = {} if (not headerValidation): print(UNAUTHENTICATION_ERROR_MSG) response = {"error": UNAUTHENTICATION_ERROR_MSG, "errorCode": 404} elif (not checkAllRequiredValuesPresent(requestBody)): print(MISSING_ERROR_MSG) response = {"error": MISSING_ERROR_MSG, "errorCode": 402} ''' BUSINESS LOGIC VALIDATION HERE ''' if ('error' not in response): userInfo = fetch_user_info(requestBody) userGroupId = userInfo["user_group_id"] requestBody["userGroup"] = fetch_user_group_name(userGroupId) if (not userInfo["is_active"]): print(MISSING_LOGIC_MSG) print("User permission restricted") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} elif ("organizationId" in requestBody and not db_utility.is_exist( "organization_details", {"organization_id": requestBody["organizationId"]})): print(MISSING_LOGIC_MSG) print("Organisation ID does not exist") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} if ('error' not in response): response = requestBody return response
def validateRequest(request): headerValidation = True ''' BOTO3 TO VALIDATE THE HEADER IF NEEDED check the environment flag ("isHeaderValidationRequired") ''' if ('candidateToken' not in request["body"] and 'testMode' not in request["body"] and environ.get('isHeaderValidationRequired')): requestBody = WOHeader.run(request) if (requestBody['authenticationCode'] != "200"): headerValidation = False else: requestBody = request['body'] ''' VALIDATE CANDIDATE TOKEN ''' if ('candidateToken' in requestBody): if (not db_utility.is_exist("test", { "token": requestBody["candidateToken"], "is_active": True })): headerValidation = False response = {} if (not headerValidation): print(UNAUTHENTICATION_ERROR_MSG) response = {"error": UNAUTHENTICATION_ERROR_MSG, "errorCode": 404} elif (not checkAllRequiredValuesPresent(requestBody)): print(MISSING_ERROR_MSG) response = {"error": MISSING_ERROR_MSG, "errorCode": 402} ''' BUSINESS LOGIC VALIDATION HERE ''' if ('error' not in response): userInfo = fetch_user_info(requestBody) requestBody['userGroupId'] = userInfo['user_group_id'] requestBody["userId"] = userInfo["user_id"] if (not userInfo["is_active"]): print(MISSING_LOGIC_MSG) print("User permission restricted") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} elif (userInfo['user_group_id'] == 2): requestBody["organizationId"] = userInfo["organization_id"] if (not fetch_organisation_status(requestBody["organizationId"])): print(MISSING_LOGIC_MSG) print("Organisation permission restricted") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} elif ('questionSetId' in requestBody and db_utility.is_exist( "question_set", { "question_set_id": requestBody['questionSetId'], "is_question_bank": True })): print(MISSING_LOGIC_MSG) print("Question bank permission restricted") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} elif (userInfo['user_group_id'] == 1): if ('questionSetId' in requestBody and db_utility.is_exist( "question_set", { "question_set_id": requestBody['questionSetId'], "is_question_bank": False })): print(MISSING_LOGIC_MSG) print("Question set permission restricted") response = {"error": MISSING_LOGIC_MSG, "errorCode": 402} if ('error' not in response): response = requestBody return response
def lambda_handler(event, context): proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) print("Valid Request", validRequest) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] return proxyResponse else: ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' try: Negative = 0 Positive = 0 Mixed = 0 Neutral = 0 Nomatch = 0 response = {} print("Test id = ", validRequest['testId']) testStatus = db.is_exist(TEST_TABLE, {"test_id": validRequest['testId']}) print("test status = ", testStatus, " test status type =", type(testStatus)) if (not testStatus): proxyResponse['statusCode'] = 402 proxyResponse['error'] = "test not found" return proxyResponse totalDescQuestions = totalNoOfMCQQuestion(validRequest) if (totalDescQuestions == 0): response['error'] = "No questions found in the test" response['statusCode'] = 402 return response # print("Total score = ",totalScore) print("Total question = ", totalDescQuestions) questionsAnswered = db.fetch_where_and( DESC_SCORE, [{ "test_id": validRequest['testId'], "key": SCORE_TYPE }]) print("Ans question = ", questionsAnswered) questionsAnsweredCount = len(questionsAnswered) print("Ans count = ", questionsAnsweredCount) if (questionsAnsweredCount == 0): print("No questions found") response['statusCode'] = 200 response['body'] = json.dumps([]) return response for i in questionsAnswered: print("question = ", i) if i['label'] == "Negative": print("Negative") Negative += 1 elif i['label'] == "Positive": print("Positive") Positive += 1 elif i['label'] == "Neutral": print("Neutral") Neutral += 1 elif i['label'] == "Mixed": print("Mixed") Mixed += 1 else: print("Nomatch") Nomatch += 1 print(Negative, Positive, Neutral, Mixed) if (totalDescQuestions > questionsAnsweredCount): NegativePercent = int( (Negative / questionsAnsweredCount) * 100) PositivePercent = int( (Positive / questionsAnsweredCount) * 100) MixedPercent = int((Mixed / questionsAnsweredCount) * 100) NeutralPercent = int((Neutral / questionsAnsweredCount) * 100) response['totalQuestionInDB'] = int(questionsAnsweredCount) else: NegativePercent = int((Negative / totalDescQuestions) * 100) PositivePercent = int((Positive / totalDescQuestions) * 100) MixedPercent = int((Mixed / totalDescQuestions) * 100) NeutralPercent = int((Neutral / totalDescQuestions) * 100) response['totalQuestionInDB'] = int(totalDescQuestions) response['NegativePercent'] = NegativePercent response['PositivePercent'] = PositivePercent response['MixedPercent'] = MixedPercent response['NeutralPercent'] = NeutralPercent response['totalQuestion'] = findingDescQuestionCount( validRequest['testId']) print("response = ", response) proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(response) return proxyResponse except Exception as e: proxyResponse['statusCode'] = 402 proxyResponse['error'] = str(e) return proxyResponse print(proxyResponse) return proxyResponse
def lambda_handler(event, context): print(event['body']) Bucket = event['body']['Bucket'] # Bucket="workonic-media-files" # key="mainCSV/6_Sample.csv" key = event['body']['Key'] print(key) s3 = boto3.client('s3') obj = s3.get_object(Bucket=Bucket, Key=key) emailcontent = obj['Body'].read().decode('utf-8') print("YES") TESTDATA = StringIO(emailcontent) df = pd.read_csv(TESTDATA, sep=",") print(df) event['body']['csv'] = df # for bucket in s3.buckets.all(): # print(bucket.name) proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] else: ''' BUSINESS LOGIC STARTS HERE ''' userName = validRequest['userId'] userDetail = db_utility.fetch_where("user_master", {"user_name": userName})[0] # print(userDetail) csvFile = validRequest['csv'] insertionFailed = [] for i in range(csvFile.shape[0]): # print(csvFile.loc[i]) candidate_param = {} test_param = {} tracker_param = {} invitation_param = {} param = {} firstName = csvFile.loc[i, 'firstName'] email = csvFile.loc[i, 'email'] print(email) candidate_param['candidate_id'] = db_utility.fetch_next_id( "candidate", "candidate_id") candidate_param["_id"] = candidate_param["candidate_id"] candidate_param['first_name'] = firstName if (not pd.isnull(csvFile.loc[i, 'lastName'])): lastName = csvFile.loc[i, 'lastName'] candidate_param['last_name'] = lastName candidate_param['email'] = email candidate_param['is_active'] = True candidate_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") candidate_param['organization_id'] = userDetail['organization_id'] candidate_param['created_by'] = userDetail['user_id'] questionSetDetail = db_utility.fetch_where( "question_set", {"question_set_id": validRequest['question_set_id']})[0] test_param['test_id'] = db_utility.fetch_next_id("test", "test_id") test_param["_id"] = test_param["test_id"] test_param['candidate_id'] = candidate_param["candidate_id"] test_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") test_param['question_set_id'] = validRequest['question_set_id'] test_param['is_active'] = True test_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") test_param['organization_id'] = userDetail['organization_id'] test_param['created_by'] = userDetail['user_id'] test_param['expire_at'] = questionSetDetail['expire_at'] while True: token = ''.join( random.choice(string.ascii_lowercase) for i in range(10)) # print(token) tokenValidation = db_utility.is_exist("test", {"token": token}) if (not tokenValidation): test_param['token'] = token break else: continue tracker_param = {} tracker_param['tracker_id'] = db_utility.fetch_next_id( "log_tracker", "tracker_id") tracker_param["_id"] = tracker_param['tracker_id'] tracker_param['test_id'] = test_param['test_id'] tracker_param['activity_type_id'] = "000" tracker_param['activity_time'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") candidate_data = db_utility.insert_data_one( "candidate", candidate_param) test_data = db_utility.insert_data_one("test", test_param) tracker_data = db_utility.insert_data_one("log_tracker", tracker_param) if candidate_data == "200" and tracker_data == "200" and test_data == "200": print("Data Inserted") param = tracker_param orgDetail = db_utility.fetch_where( "organization_details", {"organization_id": userDetail['organization_id']})[0] organisation_name = orgDetail['organization_name'] test_name = questionSetDetail['question_set_name'] first_name = firstName recruiter_name = orgDetail['organization_name'] recruiter_phone = orgDetail['contact_number'] test_url = environ.get('TESTURL') + '/#/token/' + token # test_url = 'localhost:4200/token/'+token recruiter_email = orgDetail['contact_email'] test_duration = questionSetDetail['duration'] test_expire = questionSetDetail['expire_at'] inviteParam = { 'organisation_name': organisation_name, 'test_name': test_name, 'first_name': first_name, 'recruiter_name': recruiter_name, 'test_url': test_url, 'recruiter_phone': recruiter_phone, 'recruiter_email': recruiter_email, 'test_duration': test_duration, 'test_expire': test_expire } request = { "to": [email], "parameters": inviteParam, 'templateName': 'test_invite', 'candidateToken': token } client = boto3.client('lambda', region_name=environ['Region']) response = client.invoke(FunctionName='WO-' + environ['stage'] + '-SendEmail', InvocationType='RequestResponse', Payload=json.dumps({'body': request})) # response=json.loads(response['Payload'].read().decode("utf-8")) # print(response) response = "200" if response == "200": print("Test Invitation Sent") invitation_param['tracker_id'] = db_utility.fetch_next_id( "log_tracker", "tracker_id") invitation_param["_id"] = invitation_param['tracker_id'] invitation_param['test_id'] = test_param['test_id'] invitation_param['activity_type_id'] = "001" invitation_param['activity_time'] = datetime.datetime.now( ).strftime("%Y-%m-%dT%H:%M:%S") invitation_data = db_utility.insert_data_one( "log_tracker", invitation_param) else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR param['erroMessage'] = "Sending Inivitation Failed" invitation_data = "0" if invitation_data == "200": print("Invitation Data Inserted") param['statusCode'] = 200 param['Message'] = "All User Inserted" else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR insertionFailed.append(i) param["insertionFailedFor"] = insertionFailed else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR insertionFailed.append(i) param["insertionFailedFor"] = insertionFailed response = param ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' proxyResponse['statusCode'] = 200 # response={} # print(response) proxyResponse['body'] = json.dumps(response) print(proxyResponse) return proxyResponse
def lambda_handler(event, context): proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) print("Valid Request", validRequest) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] return proxyResponse else: ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' try: Negative = 0 Positive = 0 Mixed = 0 Neutral = 0 Nomatch = 0 response = {} print("Test id = ", validRequest['testId']) testStatus = db.is_exist(TEST_TABLE, {"test_id": validRequest['testId']}) print("test status = ", testStatus, " test status type =", type(testStatus)) if (not testStatus): proxyResponse['statusCode'] = 402 proxyResponse['error'] = "test not found" return proxyResponse totalDescQuestions = totalNoOfMCQQuestion(validRequest) if (totalDescQuestions == 0): response['error'] = "No questions found in the test" response['statusCode'] = 402 return response # print("Total score = ",totalScore) print("Total question = ", totalDescQuestions) questionsAnswered = db.fetch_where_and( DESC_SCORE, [{ "test_id": validRequest['testId'], "key": SCORE_TYPE }]) print("Ans question = ", questionsAnswered) questionsAnsweredCount = len(questionsAnswered) print("Ans count = ", questionsAnsweredCount) if (questionsAnsweredCount == 0): print("No questions found") response['statusCode'] = 200 response['body'] = json.dumps([]) return response high = [] low = [] [ high.append(i) if (i['label'] == 'High') else low.append(i) for i in questionsAnswered ] highAgeRange = math.ceil(sum(i['value'] for i in high) / len(high)) print("HighAgeRange = ", highAgeRange) lowAgeRange = math.ceil(sum(i['value'] for i in low) / len(low)) print("lowAgeRange = ", lowAgeRange) questionsAnswered = db.fetch_where_and( DESC_SCORE, [{ "test_id": validRequest['testId'], "key": GENDER }]) genderList = [] for i in questionsAnswered: genderList.append(i['label']) print("genderList = ", genderList) genderCount = {i: genderList.count(i) for i in set(genderList)} print("genderCount = ", genderCount) genderMaxProb = max(genderCount.keys(), key=(lambda x: genderCount[x])) print("genderMaxProbability = ", genderMaxProb) response['highAgeRange'] = highAgeRange response['lowAgeRange'] = lowAgeRange response['gender'] = genderMaxProb proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(response) return proxyResponse except Exception as e: proxyResponse['statusCode'] = 402 proxyResponse['error'] = str(e) return proxyResponse print(proxyResponse) return proxyResponse
def lambda_handler(event, context): proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) print("Valid Request", validRequest) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] return proxyResponse else: ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' try: response = {} print("Test id = ", validRequest['testId']) testStatus = db.is_exist(TEST_TABLE, {"test_id": validRequest['testId']}) print("test status = ", testStatus, " test status type =", type(testStatus)) if (not testStatus): proxyResponse['statusCode'] = 402 proxyResponse['error'] = "test not found" return proxyResponse totalMCQQuestions, totalScore = totalNoOfMCQQuestion(validRequest) if (totalMCQQuestions == 0): # response['error'] = "No questions found in the test" # response['statusCode'] = 402 # return response print("No quesiton attempted ") response['percentage'] = 0 response['correctAnswers'] = 0 response['testId'] = validRequest['testId'] response['totalQuestions'] = totalMCQQuestions response['overallScore'] = int( overallScore(validRequest['testId'])) proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(response) return proxyResponse print("Total score = ", totalScore) print("Total question = ", totalMCQQuestions) mcqAttended = db.fetch_where_and( MCQ_SCORE, [{ "test_id": validRequest['testId'] }]) mcqAttendedCount = len(mcqAttended) if (mcqAttendedCount == 0): print("No quesiton attempted ") response['percentage'] = 0 response['correctAnswers'] = 0 response['testId'] = validRequest['testId'] response['totalQuestions'] = totalMCQQuestions proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(response) return proxyResponse print("Attended questions = ", mcqAttended) print("Attended question count = ", mcqAttendedCount) attendedScore = sum(i['score'] for i in mcqAttended) wrongAnswersList = [i for i in mcqAttended if (i['score'] == 0)] print("Wrong answers list = ", wrongAnswersList) wrongAnswersCount = len(wrongAnswersList) print("wrongAnswersCount = ", wrongAnswersCount) percentageScore = (attendedScore / totalScore) * 100 print("percentage = ", percentageScore) response['percentage'] = int(percentageScore) response['correctAnswers'] = mcqAttendedCount - wrongAnswersCount response['totalQuestions'] = totalMCQQuestions response['testId'] = validRequest['testId'] response['overallScore'] = int(overallScore( validRequest['testId'])) proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(response) print("last response = ", response) return proxyResponse except Exception as e: proxyResponse['statusCode'] = 402 proxyResponse['error'] = "Error in database" return proxyResponse print(proxyResponse) return proxyResponse
def lambda_handler(event, context): proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] else: ''' BUSINESS LOGIC STARTS HERE ''' userName = validRequest['userId'] userDetail = db_utility.fetch_where("user_master", {"user_name": userName})[0] print(userDetail) candidate_param = {} test_param = {} tracker_param = {} invitation_param = {} param = {} # for i in requiredParams: # candidate_param[i]=validRequest[i] candidate_param['candidate_id'] = db_utility.fetch_next_id( "candidate", "candidate_id") candidate_param["_id"] = candidate_param["candidate_id"] candidate_param['first_name'] = validRequest['first_name'] if 'last_name' in validRequest: candidate_param['last_name'] = validRequest['last_name'] if 'mobile_number' in validRequest: candidate_param['mobile_number'] = validRequest['mobile_number'] candidate_param['email'] = validRequest['email'] candidate_param['is_active'] = True candidate_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") candidate_param['organization_id'] = userDetail['organization_id'] candidate_param['created_by'] = userDetail['user_id'] questionSetDetail = db_utility.fetch_where( "question_set", {"question_set_id": validRequest['question_set_id']})[0] # print(questionSetDetail) test_param['test_id'] = db_utility.fetch_next_id("test", "test_id") test_param["_id"] = test_param["test_id"] test_param['candidate_id'] = candidate_param["candidate_id"] test_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") test_param['question_set_id'] = validRequest['question_set_id'] test_param['is_active'] = True test_param['created_at'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") test_param['organization_id'] = userDetail['organization_id'] test_param['created_by'] = userDetail['user_id'] test_param['expire_at'] = questionSetDetail['expire_at'] while True: token = ''.join( random.choice(string.ascii_lowercase) for i in range(10)) # print(token) tokenValidation = db_utility.is_exist("test", {"token": token}) if (not tokenValidation): test_param['token'] = token break else: continue tracker_param = {} tracker_param['tracker_id'] = db_utility.fetch_next_id( "log_tracker", "tracker_id") tracker_param["_id"] = tracker_param['tracker_id'] tracker_param['test_id'] = test_param['test_id'] tracker_param['activity_type_id'] = "000" tracker_param['activity_time'] = datetime.datetime.now().strftime( "%Y-%m-%dT%H:%M:%S") candidate_data = db_utility.insert_data_one("candidate", candidate_param) test_data = db_utility.insert_data_one("test", test_param) tracker_data = db_utility.insert_data_one("log_tracker", tracker_param) if candidate_data == "200" and tracker_data == "200" and test_data == "200": print("Data Inserted") param = tracker_param orgDetail = db_utility.fetch_where( "organization_details", {"organization_id": userDetail['organization_id']})[0] organisation_name = orgDetail['organization_name'] test_name = questionSetDetail['question_set_name'] first_name = validRequest['first_name'] recruiter_name = orgDetail['organization_name'] recruiter_phone = orgDetail['contact_number'] test_url = environ.get('TESTURL') + '/#/token/' + token recruiter_email = orgDetail['contact_email'] test_duration = questionSetDetail['duration'] test_expire = questionSetDetail['expire_at'] inviteParam = { 'organisation_name': organisation_name, 'test_name': test_name, 'first_name': first_name, 'recruiter_name': recruiter_name, 'test_url': test_url, 'recruiter_phone': recruiter_phone, 'recruiter_email': recruiter_email, 'test_duration': test_duration, 'test_expire': test_expire } request = { "to": [validRequest['email']], "parameters": inviteParam, 'templateName': 'test_invite', 'candidateToken': token } client = boto3.client('lambda', region_name=environ['Region']) response = client.invoke(FunctionName='WO-' + environ['stage'] + '-SendEmail', InvocationType='RequestResponse', Payload=json.dumps({'body': request})) response = "200" if response == "200": print("Test Invitation Sent") invitation_param['tracker_id'] = db_utility.fetch_next_id( "log_tracker", "tracker_id") invitation_param["_id"] = invitation_param['tracker_id'] invitation_param['test_id'] = test_param['test_id'] invitation_param['activity_type_id'] = "001" invitation_param['activity_time'] = datetime.datetime.now( ).strftime("%Y-%m-%dT%H:%M:%S") invitation_data = db_utility.insert_data_one( "log_tracker", invitation_param) else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR param['erroMessage'] = "Sending Inivitation Failed" invitation_data = "0" if invitation_data == "200": print("Invitation Data Inserted") param = invitation_param else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR else: param['statusCode'] = 400 param['Error'] = DATABASE_CONNECTION_ERROR response = param ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' proxyResponse['statusCode'] = 200 # response={} # print(response) proxyResponse['body'] = json.dumps(response) print(proxyResponse) return proxyResponse
def lambda_handler(event, context): proxyResponse = {} response = {} proxyResponse['headers'] = { "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Origin": "*" } validRequest = validateRequest(event) print("Valid Request", validRequest) if ('error' in validRequest): proxyResponse['statusCode'] = validRequest['errorCode'] proxyResponse['error'] = validRequest['error'] return proxyResponse else: ''' BUSINESS LOGIC ENDS HERE BY RETURNING RESPONSE JSON ''' try: Negative = 0 Positive = 0 Mixed = 0 Neutral = 0 Nomatch = 0 response = {} print("Test id = ", validRequest['testId']) testStatus = db.is_exist(TEST_TABLE, {"test_id": validRequest['testId']}) print("test status = ", testStatus, " test status type =", type(testStatus)) if (not testStatus): proxyResponse['statusCode'] = 402 proxyResponse['error'] = "test not found" return proxyResponse totalDescQuestions = totalNoOfMCQQuestion(validRequest) if (totalDescQuestions == 0): response['error'] = "No questions found in the test" response['statusCode'] = 402 return response # print("Total score = ",totalScore) print("Total question = ", totalDescQuestions) questionsAnswered = db.fetch_where_and( DESC_SCORE, [{ "test_id": validRequest['testId'], "key": SCORE_TYPE }]) print("Ans question = ", questionsAnswered) questionsAnsweredCount = len(questionsAnswered) print("Ans count = ", questionsAnsweredCount) if (questionsAnsweredCount == 0): print("No questions found") response['statusCode'] = 200 response['body'] = json.dumps([]) return response emotionsList = [] for i in questionsAnswered: emotionsList.append(i['label']) print("Emotions list = ", emotionsList) emotionScore = { i: emotionsList.count(i) for i in set(emotionsList) } print("Emotion score = ", emotionScore) proxyResponse['statusCode'] = 200 proxyResponse['body'] = json.dumps(emotionScore) return proxyResponse except Exception as e: proxyResponse['statusCode'] = 402 proxyResponse['error'] = str(e) return proxyResponse print(proxyResponse) return proxyResponse