date range tested with get attendance

master
Malar Kannan 2017-09-01 10:15:22 +05:30
parent f5d4ad9cd9
commit c705a757b0
2 changed files with 10 additions and 5 deletions

View File

@ -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"`

View File

@ -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