~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/db.py

  • Committer: me at id
  • Date: 2009-01-15 02:55:57 UTC
  • mto: This revision was merged to the branch mainline in revision 1090.
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:branches%2Fstorm:1149
ivle.fileservice_lib.action.get_login: Always give credentials as strs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
import time
38
38
 
39
39
import ivle.conf
40
 
from ivle import caps
 
40
from ivle import (caps, user)
41
41
 
42
42
TIMESTAMP_FORMAT = '%Y-%m-%d %H:%M:%S'
43
43
 
401
401
        # Execute the query.
402
402
        return self.insert(fields, "login", self.login_fields, dry=dry)
403
403
 
 
404
    def get_user(self, login, dry=False):
 
405
        """Given a login, returns a User object containing details looked up
 
406
        in the DB.
 
407
 
 
408
        Raises a DBException if the login is not found in the DB.
 
409
        """
 
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)
 
413
        if dry:
 
414
            return userdict     # Query string
 
415
        # Package into a User object
 
416
        return user.User(**userdict)
 
417
 
 
418
    def get_users(self, dry=False):
 
419
        """Returns a list of all users in the DB, as User objects.
 
420
        """
 
421
        userdicts = self.get_all("login", self.login_fields, dry=dry)
 
422
        if dry:
 
423
            return userdicts    # Query string
 
424
        # Package into User objects
 
425
        return [user.User(**userdict) for userdict in userdicts]
 
426
 
404
427
    def get_user_loginid(self, login, dry=False):
405
428
        """Given a login, returns the integer loginid for this user.
406
429
 
915
938
        return self.db.query(query).dictresult()
916
939
 
917
940
 
 
941
    def get_enrolment(self, login, dry=False):
 
942
        """
 
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
 
946
        """
 
947
        query = """\
 
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
 
955
  AND enrolment.active
 
956
  AND login=%s;""" % _escape(login)
 
957
        if dry:
 
958
            return query
 
959
        return self.db.query(query).dictresult()
 
960
 
918
961
    def get_enrolment_groups(self, login, offeringid, dry=False):
919
962
        """
920
963
        Get all groups the user is member of in the given offering.
934
977
            return query
935
978
        return self.db.query(query).dictresult()
936
979
 
 
980
    def get_subjects_status(self, login, dry=False):
 
981
        """
 
982
        Get all subjects in IVLE, split into lists of enrolled and unenrolled
 
983
        subjects.
 
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
 
987
        """
 
988
        enrolments = self.get_enrolment(login)
 
989
        all_subjects = self.get_subjects()
 
990
 
 
991
        enrolled_set = set(x['subj_code'] for x in enrolments)
 
992
 
 
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)
 
1000
 
937
1001
 
938
1002
    # PROJECT GROUPS
939
1003
    def get_groups_by_user(self, login, offeringid=None, dry=False):