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

« back to all changes in this revision

Viewing changes to lib/common/makeuser.py

  • Committer: stevenbird
  • Date: 2008-02-14 00:18:01 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:447
graphic for user database schema

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
 
32
32
# TODO: When creating a new home directory, chown it to its owner
33
33
 
34
 
import md5
35
34
import os
36
35
import stat
37
36
import shutil
38
 
import time
39
 
import uuid
40
37
import warnings
41
38
 
42
39
import conf
43
40
import db
44
41
 
45
 
def make_svn_repo(login):
46
 
    """Create a repository for the given user.
47
 
    """
48
 
    path = os.path.join(conf.svn_repo_path, login)
49
 
    res = os.system("svnadmin create '%s'" % path)
50
 
    if res != 0:
51
 
        raise Exception("Cannot create repository for %s" % login)
52
 
 
53
 
def rebuild_svn_config():
54
 
    """Build the complete SVN configuration file.
55
 
    """
56
 
    conn = db.DB()
57
 
    res = conn.query("SELECT login, rolenm FROM login;").dictresult()
58
 
    groups = {}
59
 
    for r in res:
60
 
        role = r['rolenm']
61
 
        if role not in groups:
62
 
            groups[role] = []
63
 
        groups[role].append(r['login'])
64
 
    f = open(conf.svn_conf + ".new", "w")
65
 
    f.write("# IVLE SVN Repositories Configuration\n")
66
 
    f.write("# Auto-generated on %s\n" % time.asctime())
67
 
    f.write("\n")
68
 
    f.write("[groups]\n")
69
 
    for (g,ls) in groups.iteritems():
70
 
        f.write("%s = %s\n" % (g, ",".join(ls)))
71
 
    f.write("\n")
72
 
    for r in res:
73
 
        login = r['login']
74
 
        f.write("[%s:/]\n" % login)
75
 
        f.write("%s = rw\n" % login)
76
 
        f.write("@tutor = r\n")
77
 
        f.write("@lecturer = rw\n")
78
 
        f.write("@admin = rw\n")
79
 
        f.write("\n")
80
 
    f.close()
81
 
    os.rename(conf.svn_conf + ".new", conf.svn_conf)
82
 
 
83
 
def make_svn_config(login):
84
 
    """Add an entry to the apache-svn config file for the given user.
85
 
       Assumes the given user is either a guest or a student.
86
 
    """
87
 
    f = open(conf.svn_conf, "a")
88
 
    f.write("[%s:/]\n" % login)
89
 
    f.write("%s = rw\n" % login)
90
 
    f.write("@tutor = r\n")
91
 
    f.write("@lecturer = rw\n")
92
 
    f.write("@admin = rw\n")
93
 
    f.write("\n")
94
 
    f.close()
95
 
 
96
 
def make_svn_auth(login):
97
 
    """Setup svn authentication for the given user.
98
 
       FIXME: create local.auth entry
99
 
    """
100
 
    passwd = md5.new(uuid.uuid4().bytes).digest().encode('hex')
101
 
    if os.path.exists(conf.svn_auth_ivle):
102
 
        create = ""
103
 
    else:
104
 
        create = "c"
105
 
 
106
 
    db.DB().update_user({'svn_pass':passwd})
107
 
 
108
 
    res = os.system("htpasswd -%smb %s %s" % (create,
109
 
                                              conf.svn_auth_ivle,
110
 
                                              login, passwd))
111
 
    if res != 0:
112
 
        raise Exception("Unable to create ivle-auth for %s" % login)
113
 
 
114
42
def make_jail(username, uid, force=True):
115
43
    """Creates a new user's jail space, in the jail directory as configured in
116
44
    conf.py.
237
165
    if errors:
238
166
        raise Exception, errors
239
167
 
240
 
def make_user_db(**kwargs):
 
168
def make_user_db(login, uid, password, nick, fullname, rolenm, studentid,
 
169
    force=True):
241
170
    """Creates a user's entry in the database, filling in all the fields.
242
 
    All arguments must be keyword args. They are the fields in the table.
243
 
    However, instead of supplying a "passhash", you must supply a
244
 
    "password" argument, which will be hashed internally.
245
 
    Also do not supply a state. All users are created in the "no_agreement"
246
 
    state.
247
 
    Throws an exception if the user already exists.
 
171
    If force is False, throws an exception if the user already exists.
 
172
    If True, overwrites the user's entry in the DB.
248
173
    """
249
174
    dbconn = db.DB()
250
 
    dbconn.create_user(**kwargs)
 
175
    if force:
 
176
        # Delete user if it exists
 
177
        try:
 
178
            dbconn.delete_user(login)
 
179
        except:
 
180
            pass
 
181
    dbconn.create_user(login, uid, password, nick, fullname, rolenm, studentid)
251
182
    dbconn.close()