Пример #1
0
 def get_student_by_id(self, student_id: int) -> Optional[Dict]:
     """
     get student info by id
     :param student_id:
     :return: student list of dict
     """
     try:
         self.logger.info("Get student info by student_id:{}".format(student_id))
         student = StudentModel.get_student_by_id(student_id)
         if not student:
             raise SQLCustomError(description="No data for requested student id: {}".format(student_id))
         return student.student_dict()
     except SQLAlchemyError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="GET student by ID SQL ERROR")
Пример #2
0
    def update_student_by_id(self, student_id: int, data: Dict) -> bool:
        """
        put student by id
        :param student_id:
        :param data:
        :return:
        """
        if not data:
            raise RequestDataEmpty("Student data is empty")
        if not self.input_validate.validate_json(data, student_schema):
            self.logger.error("All student field input must be required.")
            raise ValidateFail("Student update validation fail")
        try:
            student = StudentModel.get_student_by_id(student_id)
            self.logger.info(
                "Update student info by student_id:{}".format(student_id))

            old_photo_url = student.photo
            if data["photo"]:
                new_photo_url = self.upload_file(data["photo"])
            else:
                new_photo_url = None

            updated_student = StudentModel.update_student(
                student_id,
                StudentModel(name=data["name"],
                             deactivated_at=data["deactivated_at"],
                             birth_date=data["birth_date"],
                             father_name=data["father_name"],
                             mother_name=data["mother_name"],
                             parents_occupation=data["parents_occupation"],
                             gender=data["gender"],
                             photo=new_photo_url or old_photo_url,
                             address_id=data["address_id"]))

            if new_photo_url and old_photo_url:
                self.delete_file(old_photo_url)

            return updated_student

        except SQLAlchemyError as error:
            self.logger.error("Error: {}".format(error))
            raise SQLCustomError(description="Update student by ID SQL ERROR")
        except SQLCustomError as error:
            self.logger.error("Error: {}".format(error))
            raise SQLCustomError(description="No record for requested student")