Ejemplo n.º 1
0
 def update_transfer_by_id(self, transfer_id: int, data: Dict[str,
                                                              str]) -> bool:
     """
     update transfer by id
     :param transfer_id:
     :param data:
     :return:
     """
     if not transfer_id or not data:
         raise RequestDataEmpty("Transfer data is empty")
     if not self.input_validate.validate_json(data, transfer_schema):
         self.logger.error("All transfer field input must be required.")
         raise ValidateFail("Transfer update validation fail")
     try:
         self.logger.info("Update transfer info by id %s", transfer_id)
         return TransferModel.update_transfer(
             transfer_id,
             TransferModel(year=int(data["year"]),
                           month=data["month"],
                           total_jpy=int(data["total_jpy"]),
                           total_mmk=int(data["total_mmk"])))
     except SQLAlchemyError as error:
         self.logger.error(
             "Transfer update fail. id %s, error %s, custom error: %s",
             transfer_id, traceback.format_exc(), error)
         raise SQLCustomError(description="Update transfer by ID SQL ERROR")
     except SQLCustomError as error:
         self.logger.error(
             "Transfer update fail. id %s, error %s, custom error: %s",
             transfer_id, traceback.format_exc(), error)
         raise SQLCustomError(description="No record for requested address")
Ejemplo n.º 2
0
 def update_attendance_by_id(self, attendance_id: int, data: Dict) -> bool:
     """
     put attendance by id
     :param attendance_id:
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("Attendance data is empty")
     if not self.input_validate.validate_json(data, attendance_schema):
         self.logger.error("All attendance field input must be required.")
         raise ValidateFail("Attendance update validation fail")
     try:
         self.logger.info("Update attendance info by attendance_id:{}".format(attendance_id))
         return AttendanceModel.update_attendance(attendance_id, AttendanceModel(
             student_id=data["student_id"],
             school_id=data["school_id"],
             grade=data["grade"],
             year=data["year"],
             enrolled_date=data["enrolled_date"]))
     except SQLAlchemyError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="Update attendance by ID SQL ERROR")
     except SQLCustomError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="No record for requested attendance")
Ejemplo n.º 3
0
 def update_user_by_id(self, user_id: int, data: Dict[str, Any]) -> bool:
     """
     update user by id
     :param user_id:
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("user data is empty")
     if not self.input_validate.validate_json(data, user_schema):
         self.logger.error("All user field input must be required.")
         raise ValidateFail("User update validation fail")
     try:
         self.logger.info("update user info by id %s", user_id)
         return UserModel.update_user(
             user_id,
             UserModel(name=data["name"],
                       email=data["email"],
                       address_id=data["address_id"],
                       hashed_password=generate_password_hash(
                           data["password"]),
                       role=data["role"],
                       country=data["country"],
                       donation_active=data["donation_active"]))
     except SQLAlchemyError:
         self.logger.error("User update fail. id %s, error %s", user_id,
                           traceback.format_exc())
         raise SQLCustomError(description="Update user by ID SQL ERROR")
     except SQLCustomError as error:
         self.logger.error(
             "User update fail. id %s, error %s, custom error: %s", user_id,
             traceback.format_exc(), error)
         raise SQLCustomError(description="No record for requested user")
Ejemplo n.º 4
0
 def update_address_by_id(self, address_id: int, data: Dict[str, str]) -> bool:
     """
     update address by id
     :param address_id:
     :param data:
     :return:
     """
     if not address_id or not data:
         raise RequestDataEmpty("Address data is empty")
     if not self.input_validate.validate_json(data, address_schema):
         self.logger.error("All address field input must be required.")
         raise ValidateFail("Address update validation fail")
     try:
         self.logger.info("update address info by id %s", address_id)
         return AddressModel.update_address(address_id, AddressModel(
             division=data["division"],
             district=data["district"],
             township=data["township"],
             street_address=data["street_address"],
             type=data["type"]))
     except SQLAlchemyError as e:
         self.logger.error("Address update fail. id %s, error %s, custom error: %s", address_id,
                           traceback.format_exc(), e)
         raise SQLCustomError(description="Update address by ID SQL ERROR")
     except SQLCustomError as e:
         self.logger.error("Address update fail. id %s, error %s, custom error: %s", address_id,
                           traceback.format_exc(), e)
         raise SQLCustomError(description="No record for requested address")
Ejemplo n.º 5
0
 def create_user(self, data: Dict[str, Any]) -> int:
     """
     create school records
     :param data:
     :return: created user id
     """
     if not data:
         raise RequestDataEmpty("user data is empty")
     if not self.input_validate.validate_json(data, user_schema):
         self.logger.error("All user field input must be required.")
         raise ValidateFail("User validation fail")
     try:
         return UserModel.create_user(
             UserModel(name=data["name"],
                       email=data["email"],
                       address_id=data["address_id"],
                       hashed_password=generate_password_hash(
                           data["password"]),
                       role=data["role"],
                       country=data["country"],
                       donation_active=data["donation_active"]))
     except SQLAlchemyError:
         self.logger.error("User create fail. email %s, error %s",
                           data.get("email"), traceback.format_exc())
         raise SQLCustomError("Create User Error")
 def update_donation_by_id(self, donation_id: int, data: Dict) -> bool:
     """
     put donation by id
     :param donation_id:
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("Donation data is empty")
     if not self.input_validate.validate_json(data, donation_schema):
         self.logger.error("All donation field input must be required.")
         raise ValidateFail("Donation update validation fail")
     try:
         self.logger.info("Update donation info by donation_id:{}".format(donation_id))
         return DonationModel.update_donation(donation_id, DonationModel(
             user_id=data["user_id"],
             attendance_id=data["attendance_id"],
             transfer_id=data["transfer_id"],
             year=data["year"],
             month=data["month"],
             mmk_amount=data["mmk_amount"],
             jpy_amount=data["jpy_amount"],
             paid_at=data["paid_at"]))
     except SQLAlchemyError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="Update donation by ID SQL ERROR")
     except SQLCustomError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="No record for requested donation")
Ejemplo n.º 7
0
 def create_student(self, data: Dict[str, Any]) -> int:
     """
     create school records
     :param data:
     :return: created student id
     """
     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 validation fail")
     try:
         uploaded_photo_url = self.upload_file(
             data["photo"]) if data.get("photo") else None
         return StudentModel.create_student(
             StudentModel(name=data["name"],
                          deactivated_at=data["deactivated_at"],
                          birth_date=data["birth_date"],
                          father_name=data["father_name"],
                          gender=data["gender"],
                          mother_name=data["mother_name"],
                          parents_occupation=data["parents_occupation"],
                          photo=uploaded_photo_url,
                          address_id=data["address_id"]))
     except SQLAlchemyError as error:
         self.logger.error(
             "Student create fail. name %s, error %s, format: %s ",
             data["name"], error, traceback.format_exc())
         raise SQLCustomError("Student create fail")
Ejemplo n.º 8
0
 def update_extra_fund_by_id(self, extra_fund_id: int,
                             data: Dict[str, str]) -> bool:
     """
     update extra fund by id
     :param extra_fund_id:
     :param data:
     :return:
     """
     if not extra_fund_id or not data:
         raise RequestDataEmpty("Extra fund data is empty")
     if not self.input_validate.validate_json(data, extra_funds_schema):
         self.logger.error("All extra fund field input must be required.")
         raise ValidateFail("Extra fund update validation fail")
     try:
         self.logger.info("Update extra fund info by id %s", extra_fund_id)
         return ExtraFundsModel.update_extra_fund(
             extra_fund_id,
             ExtraFundsModel(mmk_amount=int(data["mmk_amount"]),
                             transfer_id=int(data["transfer_id"])))
     except SQLAlchemyError as e:
         self.logger.error(
             "Extra fund update fail. id %s, error %s, custom error: %s",
             extra_fund_id, traceback.format_exc(), e)
         raise SQLCustomError(
             description="Update extra fund by ID SQL ERROR")
     except SQLCustomError as e:
         self.logger.error(
             "Extra fund update fail. id %s, error %s, custom error: %s",
             extra_fund_id, traceback.format_exc(), e)
         raise SQLCustomError(
             description="No record for requested extra fund")
 def create_donation(self, data: Dict) -> int:
     """
     create donation records
     :param data:
     :return: created donation id
     """
     if not data:
         raise RequestDataEmpty("Donation data is empty")
     if not self.input_validate.validate_json(data, donation_schema):
         self.logger.error("All donation field input must be required.")
         raise ValidateFail("Donation validation fail")
     try:
         return DonationModel.create_donation(DonationModel(
             user_id=data["user_id"],
             attendance_id=data["attendance_id"],
             transfer_id=data["transfer_id"],
             year=data["year"],
             month=data["month"],
             mmk_amount=data["mmk_amount"],
             jpy_amount=data["jpy_amount"],
             paid_at=data["paid_at"]
             ))
     except SQLAlchemyError as error:
         self.logger.error("Donation create fail. error %s", error)
         raise SQLCustomError("Donation create fail")
Ejemplo n.º 10
0
    def create_address(self, data: Dict[str, str], flush: bool = False) -> int:
        """
        create new address
        :param data: data dict includes division, district, township, street_address
        :param flush: default false
        :return: True if creation success else False
        """

        if not data:
            raise RequestDataEmpty("Address data is empty")
        if not self.input_validate.validate_json(data, address_schema):
            self.logger.error("All address field input must be required.")
            raise ValidateFail("Address validation fail")
        try:
            return AddressModel.create_address(AddressModel(
                division=data["division"],
                district=data["district"],
                township=data["township"],
                street_address=data["street_address"],
                type=data["type"]),
                                               flush=flush)
        except SQLAlchemyError:
            self.logger.error("Address create fail. error %s",
                              traceback.format_exc())
            raise SQLCustomError("Address create fail")
Ejemplo n.º 11
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:
         self.logger.info(
             "Update student info by student_id:{}".format(student_id))
         return 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"],
                          photo=data["photo"],
                          address_id=data["address_id"]))
     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")
Ejemplo n.º 12
0
 def update_school_by_id(self, school_id: int, data: Dict) -> bool:
     """
     update school by id
     :param school_id:
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("school data is empty")
     if not self.input_validate.validate_json(data, school_schema):
         self.logger.error("All school field input must be required.")
         raise ValidateFail("School update validation fail")
     try:
         self.logger.info(
             "update school info by school_id:{}".format(school_id))
         return SchoolModel.update_school(
             school_id,
             SchoolModel(name=data["school_name"],
                         contact_info=data["contact_info"],
                         address_id=data["address_id"]))
     except SQLAlchemyError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="Update school by ID SQL ERROR")
     except SQLCustomError as error:
         self.logger.error("Error: {}".format(error))
         raise SQLCustomError(description="No record for requested school")
Ejemplo n.º 13
0
 def reset_password(self, data: Dict) -> bool:
     """
     reset password by full admin
     """
     if not self.input_validate.validate_json(data, password_reset_schema):
         self.logger.error("Reset password validation fail")
         raise ValidateFail("Reset password validation fail")
     user = self.get_user_model_by_id(data.get("user_id"))
     return self.change_password_by_id(user.id, data.get("password"))
Ejemplo n.º 14
0
 def create_school(self, data: Dict) -> bool:
     """
     create school records
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("School data is empty")
     if not self.input_validate.validate_json(data, school_schema):
         self.logger.error("All school field input must be required.")
         raise ValidateFail("School validation fail")
     try:
         return SchoolModel.create_school(SchoolModel(**data))
     except SQLAlchemyError as error:
         self.logger.error("School create fail. error %s", error)
         raise SQLCustomError("School create fail")
Ejemplo n.º 15
0
 def create_attendance(self, data: Dict) -> bool:
     """
     create attendance records
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("Attendance data is empty")
     if not self.input_validate.validate_json(data, attendance_schema):
         self.logger.error("All attendance field input must be required.")
         raise ValidateFail("Attendance validation fail")
     try:
         return AttendanceModel.create_attendance(AttendanceModel(**data))
     except SQLAlchemyError as error:
         self.logger.error("Attendance create fail. error %s, format: %s ",
                           error, traceback.format_exc())
         raise SQLCustomError("Attendance create fail")
Ejemplo n.º 16
0
 def create_extra_fund(self, data: Dict[str, str]) -> bool:
     """
     create new extra fund
     :param data: data dict includes extra fund_id, mmk_amount, transfer_id
     :return: True if creation success else False
     """
     if not data:
         raise RequestDataEmpty("Extra funds data is empty")
     if not self.input_validate.validate_json(data, extra_funds_schema):
         self.logger.error("All extra field input must be required.")
         raise ValidateFail("Extra validation fail")
     try:
         return ExtraFundsModel.create_extra_fund(
             ExtraFundsModel(mmk_amount=int(data["mmk_amount"]),
                             transfer_id=int(data["transfer_id"])))
     except SQLAlchemyError:
         self.logger.error("Extra funds create fail. error %s",
                           traceback.format_exc())
         raise SQLCustomError("Extra funds create fail")
Ejemplo n.º 17
0
 def change_password(self, user_id: int, data: Dict[str, str]) -> bool:
     """
     change password by user
     :params user_id
     :params data
     """
     if not self.input_validate.validate_json(data, password_change_schema):
         self.logger.error("Change password validation fail")
         raise ValidateFail("Change password validation fail")
     current_pwd = data.get("current_password")
     new_pwd = data.get("new_password")
     new_confirm_pwd = data.get("new_confirm_password")
     user = self.get_user_model_by_id(user_id)
     if not self.check_password(current_pwd, user):
         raise ThingahaCustomError("Current password is incorrect.")
     if new_pwd == new_confirm_pwd:
         return self.change_password_by_id(user_id, new_pwd)
     self.logger.error("Password and confirm password are different")
     raise ThingahaCustomError(
         "Password and confirm password are different")
Ejemplo n.º 18
0
 def create_attendance(self, data: Dict) -> bool:
     """
     create attendance records
     :param data:
     :return:
     """
     if not data:
         raise RequestDataEmpty("attendance data is empty")
     if not self.input_validate.validate_json(data, attendance_schema):
         self.logger.error("All attendance field input must be required.")
         raise ValidateFail("Attendance validation fail")
     try:
         return AttendanceModel.create_attendance(AttendanceModel(
             student_id=data["student_id"],
             school_id=data["school_id"],
             grade=data["grade"],
             year=data["year"],
             enrolled_date=data["enrolled_date"]))
     except SQLAlchemyError as error:
         self.logger.error("Attendance create fail. error %s", error)
         raise SQLCustomError("Attendance create fail")
Ejemplo n.º 19
0
 def create_transfer(self, data: Dict[str, str]) -> bool:
     """
     create new transfer
     :param data: data dict includes year, month, jpy amount, mmk amount
     :return: True if creation success else False
     """
     if not data:
         raise RequestDataEmpty("Transfer data is empty")
     if not self.input_validate.validate_json(data, transfer_schema):
         self.logger.error("All scheme field input must be required.")
         raise ValidateFail("Transfer validation fail")
     try:
         return TransferModel.create_transfer(
             TransferModel(year=int(data["year"]),
                           month=data["month"],
                           total_jpy=int(data["total_jpy"]),
                           total_mmk=int(data["total_mmk"])))
     except SQLAlchemyError:
         self.logger.error("Transfer create fail. error %s",
                           traceback.format_exc())
         raise SQLCustomError("Transfer create fail")