date range tested with get attendance
parent
f5d4ad9cd9
commit
c705a757b0
|
|
@ -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"`
|
||||
|
|
|
|||
13
server.py
13
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue