diff --git a/app.py b/app.py index 3f04d6c..ec04bbe 100644 --- a/app.py +++ b/app.py @@ -219,47 +219,25 @@ class App(object): return self.testfactory['questions_dir'] def get_student_grades_from_all_tests(self, uid): with self.db_session() as s: - # r = s.query(Test).filter_by(student_id=uid).order_by(Test.finishtime).all() - # return [(t.title, t.grade, t.finishtime) for t in r] - print('here') - return s.query(Test.title, Test.grade, Test.finishtime).filter_by(student_id=uid).order_by(Test.finishtime).all() + return s.query(Test.title, Test.grade, Test.finishtime).filter_by(student_id=uid).order_by(Test.finishtime) def get_json_filename_of_test(self, test_id): with self.db_session() as s: - return s.query(Test.filename).filter_by(id=test_id).one_or_none()[0] - def get_online_students(self): - # [('uid', 'name', 'starttime')] - return [(k, v['student']['name'], str(v.get('test', {}).get('start_time', '---'))) for k,v in self.online.items() if k != '0'] + return s.query(Test.filename).filter_by(id=test_id).scalar() - def get_offline_students(self): - # list of ('uid', 'name') sorted by uid - return [u[:2] for u in self.get_all_students() if u[0] not in self.online] + def get_online_students(self): # [('uid', 'name', 'starttime')] + return [(k, v['student']['name'], str(v.get('test', {}).get('start_time', '---'))) for k,v in self.online.items() if k != '0'] def get_all_students(self): - # list of all ('uid', 'name', 'password') sorted by uid with self.db_session() as s: - r = s.query(Student).all() - return sorted(((u.id, u.name, u.password) for u in r if u.id != '0'), key=lambda k: k[0]) + return s.query(Student.id, Student.name, Student.password).filter(Student.id!='0').order_by(Student.id) def get_student_grades_from_test(self, uid, testid): with self.db_session() as s: - r = s.query(Test).filter_by(student_id=uid).filter_by(ref=testid).all() - return [(u.grade, u.finishtime, u.id) for u in r] - - + return s.query(Test.grade, Test.finishtime, Test.id).filter_by(student_id=uid).filter_by(ref=testid).all() def get_students_state(self): - # [{ - # 'uid' : '12345' - # 'name' : 'John Smith', - # 'start_time': '', - # 'grades' : [10.2, 13.1], - # ... - # }] - l = [] - for u in self.get_all_students(): - uid, name, pw = u - l.append({ + return [{ 'uid': uid, 'name': name, 'allowed': uid in self.allowed, @@ -267,9 +245,8 @@ class App(object): 'start_time': self.online.get(uid, {}).get('test', {}).get('start_time',''), 'password_defined': pw != '', 'grades': self.get_student_grades_from_test(uid, self.testfactory['ref']), - 'focus': self.online.get(uid, {}).get('student', {}).get('focus', True), # FIXME - }) - return l + # 'focus': self.online.get(uid, {}).get('student', {}).get('focus', True), # FIXME + } for uid, name, pw in self.get_all_students()] def get_allowed_students(self): # set of 'uid' allowed to login @@ -307,6 +284,3 @@ class App(object): logger.error(f'Insert failed: student {uid} already exists.') else: logger.info(f'New student inserted: {uid}, {name}') - - def set_student_focus(self, uid, value): - self.online[uid]['student']['focus'] = value -- libgit2 0.21.2