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

« back to all changes in this revision

Viewing changes to ivle/makeuser.py

Update ivle.rpc.decorators to use new exceptions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
import filecmp
46
46
import logging
47
47
import ivle.conf
48
 
import ivle.db
49
48
import ivle.pulldown_subj
50
49
 
 
50
from ivle.database import ProjectGroup
 
51
 
51
52
def chown_to_webserver(filename):
52
53
    """
53
54
    Chowns a file so the web server user owns it.
105
106
def rebuild_svn_group_config(store):
106
107
    """Build the complete SVN configuration file for groups
107
108
    """
108
 
    conn = ivle.db.DB()
109
 
    groups = conn.get_all('project_group',
110
 
        ['groupid', 'groupnm', 'projectsetid'])
111
109
    f = open(ivle.conf.svn_group_conf + ".new", "w")
112
110
    f.write("# IVLE SVN Group Repositories Configuration\n")
113
111
    f.write("# Auto-generated on %s\n" % time.asctime())
114
112
    f.write("\n")
115
 
    for g in groups:
116
 
        projectsetid = g['projectsetid']
117
 
        offeringinfo = conn.get_offering_info(projectsetid)
118
 
        subj_short_name = offeringinfo['subj_short_name']
119
 
        year = offeringinfo['year']
120
 
        semester = offeringinfo['semester']
121
 
        reponame = "_".join([subj_short_name, year, semester, g['groupnm']])
 
113
    for group in store.find(ProjectGroup):
 
114
        offering = group.project_set.offering
 
115
        reponame = "_".join([offering.subject.short_name,
 
116
                             offering.semester.year,
 
117
                             offering.semester.semester,
 
118
                             group.name])
122
119
        f.write("[%s:/]\n"%reponame)
123
 
        users = conn.get_projectgroup_members(g['groupid'])
124
 
        for u in users:
125
 
            f.write("%s = rw\n"%u['login'])
 
120
        for user in group.members:
 
121
            f.write("%s = rw\n" % user.login)
126
122
        f.write("\n")
127
123
    f.close()
128
124
    os.rename(ivle.conf.svn_group_conf + ".new", ivle.conf.svn_group_conf)
308
304
                      % (username, unixid, unixid, username))
309
305
    passwd_file.close()
310
306
 
311
 
def make_user_db(throw_on_error = True, **kwargs):
312
 
    """Creates a user's entry in the database, filling in all the fields.
313
 
    All arguments must be keyword args. They are the fields in the table.
314
 
    However, instead of supplying a "passhash", you must supply a
315
 
    "password" argument, which will be hashed internally.
316
 
    Also do not supply a state. All users are created in the "no_agreement"
317
 
    state.
318
 
    Also pulls the user's subjects using the configured subject pulldown
319
 
    module, and adds enrolments to the DB.
320
 
    Throws an exception if the user already exists.
321
 
    """
322
 
    dbconn = ivle.db.DB()
323
 
    dbconn.create_user(**kwargs)
324
 
    dbconn.close()
325
 
 
326
 
    # Pulldown subjects and add enrolments
327
 
    ivle.pulldown_subj.enrol_user(kwargs['login'])
328
 
 
329
307
def mount_jail(login):
330
308
    # This is where we'll mount to...
331
309
    destdir = os.path.join(ivle.conf.jail_base, login)