microservices/course_ingestion/routes/competency_handler.py (220 lines of code) (raw):

"""class and methods for routes handling.""" # pylint: disable=redefined-builtin import json import traceback from routes.base_handler import BaseHandler from controllers.competency_controller import CompetencyController from common.utils.logging_handler import Logger from common.utils.cache_service import delete_key from common.models import Course from middleware.validation import (validate_update_competency, validate_create_competency) import time import tornado.ioloop # pylint: disable=abstract-method # pylint: disable=unused-argument # pylint: disable=broad-exception-raised class CourseCompetencyHandler(BaseHandler): """class def handling routes.""" def get(self, *args, **kwargs): """Method for get request.""" try: if args[-1]: id = args[-1] parent_id = args[-2] response = CompetencyController.get_course_competency_controller_method( id, parent_id) else: parent_id = args[-2] response = CompetencyController.\ get_course_all_competency_controller_method( parent_id) return self.send_json( status=200, success=True, message="Successfully fetched the Competency(s)", response=response, ) except Exception as e: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json(message=str(e), success=False, status=500) @validate_create_competency def post(self, *args, **kwargs): """Method for post request.""" try: parent_id = args[-2] request_body = json.loads(self.request.body) response = CompetencyController.\ create_course_competency_controller_method( parent_id, request_body) return self.send_json( status=200, success=True, message="Successfully created the Competency", response=response, ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) def delete(self, *args, **kwargs): """Method for delete request.""" try: id = args[-1] parent_id = args[-2] return self.send_json( status=200, success=True, message="Successfully deleted the Competency", response=CompetencyController .delete_course_competency_controller_method(id, parent_id), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) def on_finish(self): """Method to be called on finish""" tornado.ioloop.IOLoop.current().add_callback(self.on_finish_async) async def on_finish_async(self): """Method for on finish tasks""" start = time.time() status_code = self.get_status() method = self.request.method if (status_code == 200 and (method in ("DELETE", "POST"))): Logger.info("INVALIDATING THE CACHE") courses = [self.path_args[-2]] Logger.info("FOUND COURSES: ----------------------->") Logger.info(courses) for course_id in courses: delete_key(course_id) end = time.time() Logger.info("Time taken") Logger.info(end-start) class LearningContentCompetencyHandler(BaseHandler): """class def handling routes.""" def get(self, *args, **kwargs): """Method for get request.""" try: if args[-1]: id = args[-1] parent_id = args[-2] response = CompetencyController.get_lc_competency_controller_method( id, parent_id) else: parent_id = args[-2] response = CompetencyController.get_all_lc_competency_controller_method( parent_id) return self.send_json( status=200, success=True, message="Successfully fetched the Competency(s)", response=response, ) except Exception as e: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json(message=str(e), success=False, status=500) @validate_create_competency def post(self, *args, **kwargs): """Method for post request.""" try: parent_id = args[-2] request_body = json.loads(self.request.body) return self.send_json( status=200, success=True, message="Successfully created the Competency", response=CompetencyController.create_lc_competency_controller_method( parent_id, request_body), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) def delete(self, *args, **kwargs): """Method for delete request.""" try: id = args[-1] parent_id = args[-2] return self.send_json( status=200, success=True, message="Successfully deleted the Competency", response=CompetencyController.delete_lc_competency_controller_method( id, parent_id), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) class CompetencyHandler(BaseHandler): """class def handling routes.""" def get(self, *args, **kwargs): """Method for get request.""" try: if args[-1]: id = args[-1] is_text_required = self.get_query_argument("is_text_required","false") if is_text_required not in ["true", "false", ""]: raise Exception("Query param is_text_required should either" "be 'true' or 'false'") is_text_required = bool(is_text_required.lower()=="true") response = CompetencyController.get_competency_controller_method(id, is_text_required) else: response = CompetencyController.get_all_competency_controller_method() return self.send_json( status=200, success=True, message="Successfully fetched the Competency(s)", response=response, ) except Exception as e: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json(message=str(e), success=False, status=500) @validate_create_competency def post(self, *args, **kwargs): """Method for post request.""" try: request_body = json.loads(self.request.body) return self.send_json( status=200, success=True, message="Successfully created the Competency", response=CompetencyController.create_competency_controller_method( request_body), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) @validate_update_competency def put(self, *args, **kwargs): """Method for put request.""" try: id = args[-1] request_body = json.loads(self.request.body) return self.send_json( status=200, success=True, message="Successfully updated the Competency", response=CompetencyController.update_competency_controller_method( id, request_body), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) def delete(self, *args, **kwargs): """Method for Delete request.""" try: id = args[-1] return self.send_json( status=200, success=True, message="Successfully deleted the Competency", response=CompetencyController.delete_competency_controller_method(id), ) except Exception as err: # pylint: disable=broad-except Logger.error(traceback.format_exc()) return self.send_json( status=500, success=False, message=str(err), response=None) def on_finish(self): """Method to be called on finish""" tornado.ioloop.IOLoop.current().add_callback(self.on_finish_async) async def on_finish_async(self): """Method for on finish tasks""" start = time.time() status_code = self.get_status() method = self.request.method if (status_code == 200 and (method in ("PUT", ))): Logger.info("INVALIDATING THE CACHE") competency_id = self.path_args[-1] courses = list(Course.collection.filter( "competency_ids", "array_contains", competency_id).fetch()) courses = [course.id for course in courses] Logger.info("FOUND COURSES: ----------------------->") Logger.info(courses) for course_id in courses: delete_key(course_id) end = time.time() Logger.info("Time taken") Logger.info(end-start)