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")
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
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
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")
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