diff --git a/README.md b/README.md index a6b4f76..bea820b 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,4 @@ or `$ http --session=./session.json GET "http://127.0.0.1:5000/api/attendance/student?identifier=3&start_time=now&end_time=now"` #### Class: -`$ http --session=./session.json GET "http://127.0.0.1:5000/api/attendance/class?identifier=1&start_time=now&end_time=now"` +`$ http --session=./session.json GET "http://127.0.0.1:5000/api/attendance/class?identifier=1"` diff --git a/server.py b/server.py index 83c3436..ee91113 100644 --- a/server.py +++ b/server.py @@ -74,20 +74,22 @@ def parse_time(time_str): utc_now = (time_str and time_str == 'now') or not time_str time = datetime.utcnow() if utc_now else None try: - time = parser.parse(attend_date) + time = parser.parse(time_str) except: pass return time def compute_attendance(request_type, object_id, start_time, end_time): + print('AttendanceUpdates for :', start_time, end_time) + def get_records(req_type, obj_id): return AttendanceUpdate.query.filter( AttendanceUpdate.update_type == req_type).filter( AttendanceUpdate.value_identifier == obj_id).filter( func.date(AttendanceUpdate.time) >= start_time.date()).filter( - func.date(AttendanceUpdate.time) >= + func.date(AttendanceUpdate.time) <= end_time.date()).all() def student_records(stud_id): @@ -97,10 +99,12 @@ def compute_attendance(request_type, object_id, start_time, end_time): pres_rec = stud_recs for gr in gcls_recs: # if any grade record overlaps with student record -> ignore - if not any(map(lambda x:gr.time.date()==x.time.date(),stud_recs)): + if not any( + map(lambda x: gr.time.date() == x.time.date(), stud_recs)): pres_rec.append(gr) recs = [] - for r in pres_rec: + # sort student records by time + for r in sorted(pres_rec, key=lambda x: x.time): recs.append({ "presence": presense_map[r.presence].lower(), "student": stud.student_name, @@ -113,6 +117,7 @@ def compute_attendance(request_type, object_id, start_time, end_time): result.extend(student_records(object_id)) if request_type == 'class': gcls = Gradeclass.query.get(object_id) + # get result for each student for stud in gcls.students: result.extend(student_records(stud.id)) return result