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

1079 by William Grant
Merge setup-refactor branch. This completely breaks existing installations;
1
#!/usr/bin/env python
2
# IVLE - Informatics Virtual Learning Environment
3
# Copyright (C) 2007-2008 The University of Melbourne
4
#
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
9
#
10
# This program is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
19
# Program: enrol
20
# Author:  William Grant
21
# Date:    08/08/2008
22
23
# Script to enrol a user in an offering.
24
25
import os
26
import sys
27
1201 by William Grant
ivle.database.get_store() now takes a configuration object.
28
from ivle.config import Config
1110 by William Grant
ivle-enrol now allows updating of existing enrolments. It also sets the role.
29
from ivle.database import get_store, Subject, Semester, Offering, User
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
30
31
def die(error):
32
    print >> sys.stderr, '%s: %s' % (os.path.basename(sys.argv[0]), error)
33
    sys.exit(1)
1079 by William Grant
Merge setup-refactor branch. This completely breaks existing installations;
34
1110 by William Grant
ivle-enrol now allows updating of existing enrolments. It also sets the role.
35
if len(sys.argv) not in (5, 6):
1822.1.1 by William Grant
Replace semester.semester with semester.{code,url_name,display_name}.
36
    print >> sys.stderr, '''usage: %s <login> <subjectcode> <year> <semestercode> [role]
1110 by William Grant
ivle-enrol now allows updating of existing enrolments. It also sets the role.
37
38
'role' should be one of student (the default), tutor or lecturer.
39
If an enrolment already exists, it will be reactivated and its role set.''' \
1079 by William Grant
Merge setup-refactor branch. This completely breaks existing installations;
40
                         % os.path.basename(sys.argv[0])
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
41
    sys.exit()
42
1201 by William Grant
ivle.database.get_store() now takes a configuration object.
43
store = get_store(Config())
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
44
45
user = User.get_by_login(store, sys.argv[1])
46
if user is None:
47
    die("user not found")
48
49
offering = store.find(Offering,
50
                    Subject.code == unicode(sys.argv[2]),
51
                    Semester.year == unicode(sys.argv[3]),
1822.1.1 by William Grant
Replace semester.semester with semester.{code,url_name,display_name}.
52
                    Semester.code == unicode(sys.argv[4]),
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
53
                    Offering.subject_id == Subject.id,
54
                    Offering.semester_id == Semester.id).one()
55
if not offering:
56
    die("subject offering not found")
57
1110 by William Grant
ivle-enrol now allows updating of existing enrolments. It also sets the role.
58
role = unicode(sys.argv[5]) if len(sys.argv) == 6 else u'student'
59
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
60
try:
1110 by William Grant
ivle-enrol now allows updating of existing enrolments. It also sets the role.
61
    offering.enrol(user, role)
1080.1.63 by William Grant
bin/ivle-enrol: Port to Storm, reorder the semester and year arguments, give
62
except AlreadyEnrolledError:
63
    die("already enrolled")
64
65
store.commit()