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

« back to all changes in this revision

Viewing changes to makeuser.py

  • Committer: mattgiuca
  • Date: 2008-06-16 06:22:45 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:773
cgirequest.py: Fixed req.path attribute, so it now DOES NOT include the
    query string part of the URI.
    (This is now consistent with the non-jail req.path. Access to the query
    string is done through req.get_fieldstorage).
    NOTE: This may break code which tries to access the query string directly.
    However all code should be using get_fieldstorage.
scripts/diffservice: Refactor so it's properly using the CGIRequest object
    rather than directly writing to CGI output and parsing query string.
    (Otherwise this code would have been broken by the above change).
    Now uses the request object and fieldstorage for input and output.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
# Script to create a new user. This can also be done through the
24
24
# administration interface.
 
25
# This script wraps common.makeuser.
 
26
# It also creates a unix account which common.makeuser does not.
 
27
# (This script may not be appropriate for production on a multi-node
 
28
# environment).
25
29
 
26
30
import sys
27
31
import os
28
32
import os.path
 
33
import pwd
 
34
import getopt
 
35
import random
29
36
# Import modules from the website is tricky since they're in the www
30
37
# directory.
31
38
sys.path.append(os.path.join(os.getcwd(), 'www'))
32
39
import conf
33
 
import common.makeuser
34
 
 
35
 
if len(sys.argv) <= 1:
36
 
    print "Usage: python makeuser.py <username>"
37
 
    sys.exit()
38
 
 
39
 
username = sys.argv[1]
 
40
import common.makeuser, common.db
 
41
 
 
42
# Requireds and optionals will be used to display the usage message
 
43
# AND do argument processing
 
44
# The names here must correspond to the fields in the database.
 
45
requireds = ["login", "fullname", "rolenm"]
 
46
optionals = [
 
47
    ('p', 'password', "Cleartext password for this user"),
 
48
    ('u', 'unixid', "Numeric unix user id"),
 
49
    ('n', 'nick', "Display name (defaults to <fullname>)"),
 
50
    ('e', 'email', "Email address"),
 
51
    ('s', 'studentid', "Student ID")
 
52
]
 
53
 
 
54
if len(sys.argv) <= 3:
 
55
    # Nicely format the usage message using the optionals
 
56
    print ("Usage: python makeuser.py [OPTIONS] %s\n    OPTIONS"
 
57
        % ' '.join(['<%s>' % x for x in requireds]))
 
58
    for short, long, desc in optionals:
 
59
        t = "        -%s | --%s" % (short, long)
 
60
        print t + (' ' * max(28 - len(t), 2)) + desc
 
61
    sys.exit(1)
 
62
 
 
63
if os.getuid() != 0:
 
64
    print "Must run makeuser.py as root."
 
65
    sys.exit(1)
 
66
 
 
67
shorts = ''.join([o[0] + ":" for o in optionals])
 
68
longs = [o[1] + "=" for o in optionals]
 
69
opts, args = getopt.gnu_getopt(sys.argv[1:], shorts, longs)
 
70
opts = dict(opts)
 
71
 
 
72
# Get the dictionary of fields from opts and args
 
73
user = {}
 
74
for i in range(0, len(requireds)):
 
75
    user[requireds[i]] = args[i]
 
76
for short, long, _ in optionals:
 
77
    try:
 
78
        user[long] = opts['-' + short]
 
79
    except KeyError:
 
80
        try:
 
81
            user[long] = opts['--' + long]
 
82
        except KeyError:
 
83
            pass
 
84
login = user['login']
 
85
if 'nick' not in user:
 
86
    user['nick'] = user['fullname']
 
87
 
 
88
# Resolve the user's username into a UID
 
89
if 'unixid' not in user:
 
90
    try:
 
91
        (_,_,uid,_,_,_,_) = pwd.getpwnam(login)
 
92
        user['unixid'] = uid
 
93
    except KeyError:
 
94
        user['unixid'] = random.randrange(5000,10000)
40
95
 
41
96
try:
42
 
    common.makeuser.makeuser(username)
 
97
    # Make the user's database entry
 
98
    common.makeuser.make_user_db(**user)
43
99
except Exception, message:
44
100
    print "Error: " + str(message)
45
101
    sys.exit(1)
46
102
 
47
 
print "Successfully created user " + username + "."
 
103
print "Successfully created user %s (%s)." % (login, user['fullname'])