401
401
# Execute the query.
402
402
return self.insert(fields, "login", self.login_fields, dry=dry)
404
def get_user(self, login, dry=False):
405
"""Given a login, returns a User object containing details looked up
408
Raises a DBException if the login is not found in the DB.
410
userdict = self.get_single({"login": login}, "login",
411
self.login_fields, self.login_primary,
412
error_notfound="get_user: No user with that login name", dry=dry)
414
return userdict # Query string
415
# Package into a User object
416
return user.User(**userdict)
418
def get_users(self, dry=False):
419
"""Returns a list of all users in the DB, as User objects.
421
userdicts = self.get_all("login", self.login_fields, dry=dry)
423
return userdicts # Query string
424
# Package into User objects
425
return [user.User(**userdict) for userdict in userdicts]
404
427
def get_user_loginid(self, login, dry=False):
405
428
"""Given a login, returns the integer loginid for this user.
915
938
return self.db.query(query).dictresult()
941
def get_enrolment(self, login, dry=False):
943
Get all offerings (in IVLE) the student is enrolled in.
944
Returns a list of dicts (all values strings), with the keys:
945
offeringid, subj_code, subj_name, subj_short_name, year, semester, url
948
SELECT offering.offeringid, subj_code, subj_name, subj_short_name,
949
semester.year, semester.semester, subject.url
950
FROM login, enrolment, offering, subject, semester
951
WHERE enrolment.offeringid=offering.offeringid
952
AND login.loginid=enrolment.loginid
953
AND offering.subject=subject.subjectid
954
AND semester.semesterid=offering.semesterid
956
AND login=%s;""" % _escape(login)
959
return self.db.query(query).dictresult()
918
961
def get_enrolment_groups(self, login, offeringid, dry=False):
920
963
Get all groups the user is member of in the given offering.
935
978
return self.db.query(query).dictresult()
980
def get_subjects_status(self, login, dry=False):
982
Get all subjects in IVLE, split into lists of enrolled and unenrolled
984
Returns a tuple of lists (enrolled, unenrolled) of dicts
985
(all values strings) with the keys:
986
subj_code, subj_name, subj_short_name, url
988
enrolments = self.get_enrolment(login)
989
all_subjects = self.get_subjects()
991
enrolled_set = set(x['subj_code'] for x in enrolments)
993
enrolled_subjects = [x for x in all_subjects
994
if x['subj_code'] in enrolled_set]
995
unenrolled_subjects = [x for x in all_subjects
996
if x['subj_code'] not in enrolled_set]
997
enrolled_subjects.sort(key=lambda x: x['subj_code'])
998
unenrolled_subjects.sort(key=lambda x: x['subj_code'])
999
return (enrolled_subjects, unenrolled_subjects)
938
1002
# PROJECT GROUPS
939
1003
def get_groups_by_user(self, login, offeringid=None, dry=False):