106
105
def rebuild_svn_group_config(store):
107
106
"""Build the complete SVN configuration file for groups
109
groups = conn.get_all('project_group',
110
['groupid', 'groupnm', 'projectsetid'])
109
111
f = open(ivle.conf.svn_group_conf + ".new", "w")
110
112
f.write("# IVLE SVN Group Repositories Configuration\n")
111
113
f.write("# Auto-generated on %s\n" % time.asctime())
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,
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']])
119
122
f.write("[%s:/]\n"%reponame)
120
for user in group.members:
121
f.write("%s = rw\n" % user.login)
123
users = conn.get_projectgroup_members(g['groupid'])
125
f.write("%s = rw\n"%u['login'])
124
128
os.rename(ivle.conf.svn_group_conf + ".new", ivle.conf.svn_group_conf)
304
308
% (username, unixid, unixid, username))
305
309
passwd_file.close()
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"
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.
322
dbconn = ivle.db.DB()
323
dbconn.create_user(**kwargs)
326
# Pulldown subjects and add enrolments
327
ivle.pulldown_subj.enrol_user(kwargs['login'])
307
329
def mount_jail(login):
308
330
# This is where we'll mount to...
309
331
destdir = os.path.join(ivle.conf.jail_base, login)