-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlectureReview.py
39 lines (32 loc) · 2 KB
/
lectureReview.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from __main__ import app
import DatabaseClient
from flask import render_template
@app.route('/lectureReview/<int:lectureId>')
def lectureReview(lectureId):
databaseClient = DatabaseClient.DatabaseClient()
selectionCriteria = {'lectureId':lectureId}
lecture = databaseClient.loadDocument(DatabaseClient.LECTURES_COL,DatabaseClient.LECTURE_TAG,selectionCriteria)
if lecture is None:
return 'Sorry lecture isnt found'
lectureLength = lecture['lectureEnd'] - lecture['lectureStart']
periodPercentage = ( databaseClient.getTimePeriod() / lectureLength ) * 100
dates = databaseClient.getDistinctValues(DatabaseClient.ATTENDANCE_COL,DatabaseClient.ATTENDANCE_TAG,'date',selectionCriteria)
Threshold = databaseClient.getPeriodThreshold()
attendanceInfo = dict()
for date in dates:
if attendanceInfo.get(date,None) is None:
attendanceInfo[date] = dict()
selectionCriteria = {'date':date,'lectureId':lectureId}
attendanceList = databaseClient.loadDocuments(DatabaseClient.ATTENDANCE_COL,DatabaseClient.ATTENDANCE_TAG,selectionCriteria)
for attendance in attendanceList:
studentName = attendance['studentName']
if attendanceInfo[date].get(studentName,None) is None:
attendanceInfo[date][studentName] = dict()
attendanceInfo[date][studentName]['studentName'] = attendance['studentName']
attendanceInfo[date][studentName]['timesOfRecogniton'] = 0
attendanceInfo[date][studentName]['ID'] = attendance['ID']
attendanceInfo[date][studentName]['attendancePercentage'] = 0
attendanceInfo[date][studentName]['timesOfRecogniton'] += attendance['timesOfRecogniton']
if attendance['timesOfRecogniton'] >= Threshold:
attendanceInfo[date][studentName]['attendancePercentage'] += periodPercentage
return render_template('lectureReview.html',attendanceInfo=attendanceInfo,enumerate=enumerate)