847
def get_enrolment(self, login, dry=False):
849
Get all subjects (in IVLE) the student is enrolled in.
850
Returns a list of tuples (all elements strings):
851
(offeringid, subj_code, subj_name, subj_short_name, year, semester).
854
SELECT offering.offeringid, subj_code, subj_name, subj_short_name,
856
FROM login, enrolment, offering, subject
857
WHERE enrolment.offeringid=offering.offeringid
858
AND login.loginid=enrolment.loginid
859
AND offering.subject=subject.subjectid
860
AND login=%s;""" % _escape(login)
863
return self.db.query(query).getresult()
867
def get_groups_by_user(self, login, offeringid=None, dry=False):
869
Get all project groups the student is in, corresponding to a
870
particular subject offering (or all offerings, if omitted).
871
Returns a list of tuples:
872
(int groupid, str groupnm, str group_nick, bool is_member).
873
(Note: If is_member is false, it means they have just been invited to
874
this group, not a member).
876
if offeringid is None:
879
and_offering = "AND project_group.offeringid = %s" % \
881
# Union both the groups this user is a member of, and the groups this
882
# user is invited to.
884
SELECT project_group.groupid, groupnm, project_group.nick, True
885
FROM project_group, group_member, login
886
WHERE project_group.groupid = group_member.groupid
887
AND group_member.loginid = login.loginid
888
AND login = %(login)s
891
SELECT project_group.groupid, groupnm, project_group.nick, False
892
FROM project_group, group_invitation, login
893
WHERE project_group.groupid = group_invitation.groupid
894
AND group_invitation.loginid = login.loginid
895
AND login = %(login)s
897
;""" % {"login": _escape(login), "and_offering": and_offering}
900
# Convert 't' -> True, 'f' -> False
901
return [(groupid, groupnm, nick, ismember == 't')
902
for groupid, groupnm, nick, ismember
903
in self.db.query(query).getresult()]
846
906
"""Close the DB connection. Do not call any other functions after
847
907
this. (The behaviour of doing so is undefined).