示例#1
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")
示例#2
0
    def post(self):
        parser.add_argument('present_student',
                            type=int,
                            action="append",
                            help='student field required',
                            required=True)
        parser.add_argument('absant_student',
                            type=int,
                            action="append",
                            help='student field required',
                            required=True)

        data = parser.parse_args()

        student_attendance = []
        y, m, d = data['date'].split('-')
        class_date = datetime.datetime(int(y), int(m), int(d))

        if AttendanceModel.find_by_date(data['class_id'],
                                        data['department_id'],
                                        data['subject_id'], class_date):
            return {
                'message':
                'This date {} data already exists '.format(data['date'])
            }

        present_data_add = [
            student_attendance.append({
                "date": class_date,
                "class_id": data['class_id'],
                "department_id": data['department_id'],
                "subject_id": data['subject_id'],
                "student_id": p_data,
                "status": "Present",
            }) for p_data in data['present_student']
        ]
        present_data_add = [
            student_attendance.append({
                "date": class_date,
                "class_id": data['class_id'],
                "department_id": data['department_id'],
                "subject_id": data['subject_id'],
                "student_id": p_data,
                "status": "Absent",
            }) for p_data in data['absant_student']
        ]

        try:
            for atten_data in student_attendance:
                add_attendance = AttendanceModel(
                    **atten_data)  #CREATE MODEL DATA FOR SAVE
                add_attendance.save_to_db(
                )  #CALL THIS FUNCTION FOR COMMIT DATA

            return {'message': 'Attendance data added successfully'}, 200

        except:
            return {'message': 'Something went wrong'}, 500
示例#3
0
def attendance():
    with app.app_context():
        users = UserModel.query.all()
        AttendanceModel.query.delete()
        amizone = amizonebot()
        for user in users:
            amizone.login(user.username, user.password)
            attend = amizone.getAttendance()
            i = 1
            while i < len(attend):
                AttendanceModel(
                    user_id=user.id, course_name=attend[i-1], percentage=attend[i+1-1], ratio=attend[i+2-1]).save_to_db()
                i = i+3
示例#4
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")
 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")
示例#6
0
    def post(self):
        data = _user_parser.parse_args()

        user = UserModel.find_user_by_username(data["username"])
        expires = datetime.timedelta(days=30)
        if user and user.password == data["password"]:
            # Puts User ID as Identity in JWT
            access_token = create_access_token(identity=user.id,
                                               fresh=True,
                                               expires_delta=expires)
            refresh_token = create_refresh_token(
                identity=user.id)  # Puts User ID as Identity in JWT
            return {
                "access_token": access_token,
                "refresh_token": refresh_token
            }, 200

        amizone = amizonebot()
        scraperdata = amizone.login(usern=data["username"],
                                    passw=data["password"])

        user = UserModel(data["username"], data["password"],
                         scraperdata["fullname"], scraperdata["profilepic"])
        user.save_to_db()

        attend = amizone.getAttendance()
        schedule = amizone.getSchedule()
        i = 1
        while i < len(attend):
            AttendanceModel(user_id=user.id,
                            course_name=attend[i - 1],
                            percentage=attend[i + 1 - 1],
                            ratio=attend[i + 2 - 1]).save_to_db()
            i = i + 3

        i = 2
        while i < len(schedule):
            ScheduleModel(user_id=user.id,
                          course_details=schedule[i],
                          prof_name=schedule[i + 1]).save_to_db()
            i = i + 2

        # except:
        #     print(Exception.__name__)
        #     return {
        #         "message": "User not found!"
        #     }, 404
        # finally:
        #     return {
        #         "message": "User not found!"
        #     }, 404

        # Puts User ID as Identity in JWT
        access_token = create_access_token(identity=user.id,
                                           fresh=True,
                                           expires_delta=expires)
        refresh_token = create_refresh_token(identity=user.id)

        return {
            "message": "User {} created!".format(data["username"]),
            "access_token": access_token,
            "refresh_token": refresh_token
        }, 200