80
80
# USER MANAGEMENT FUNCTIONS #
82
def create_user(self, login, unixid, password, nick, fullname, rolenm,
83
studentid, dry=False):
82
def create_user(self, login, password, unixid, email, nick, fullname,
83
rolenm, studentid, dry=False):
84
84
"""Creates a user login entry in the database.
85
85
Arguments are the same as those in the "login" table of the schema.
86
86
The exception is "password", which is a cleartext password. makeuser
90
90
Raises an exception if the user already exists.
92
92
passhash = _passhash(password)
93
query = ("INSERT INTO login (login, passhash, state, unixid, nick, "
94
"fullname, rolenm, studentid) VALUES "
95
"(%s, %s, 'no_agreement', %d, %s, %s, %s, %s);" %
96
(_escape(login), _escape(passhash), unixid, _escape(nick),
97
_escape(fullname), _escape(rolenm), _escape(studentid)))
93
query = ("INSERT INTO login (login, passhash, state, unixid, email, "
94
"nick, fullname, rolenm, studentid) VALUES "
95
"(%s, %s, 'no_agreement', %d, %s, %s, %s, %s, %s);" %
96
(_escape(login), _escape(passhash), unixid, _escape(email),
97
_escape(nick), _escape(fullname), _escape(rolenm),
98
99
if dry: return query
99
100
self.db.query(query)
101
def update_user(self, login, password=None, state=None, nick=None,
102
fullname=None, rolenm=None, dry=False):
102
def update_user(self, login, password=None, state=None, email=None,
103
nick=None, fullname=None, rolenm=None, dry=False):
103
104
"""Updates fields of a particular user. login is the name of the user
104
105
to update. The other arguments are optional fields which may be
105
106
modified. If None or omitted, they do not get modified. login and
147
150
Raises a DBException if the login is not found in the DB.
149
query = ("SELECT login, state, unixid, nick, fullname, rolenm, "
150
"studentid FROM login WHERE login = %s;" % _escape(login))
152
query = ("SELECT login, state, unixid, email, nick, fullname, "
153
"rolenm, studentid FROM login WHERE login = %s;" % _escape(login))
151
154
if dry: return query
152
155
result = self.db.query(query)
153
156
# Expecting exactly one
162
165
"""Returns a list of all users. The list elements are a dictionary of
163
166
the user's DB fields, excluding the passhash field.
165
query = ("SELECT login, state, unixid, nick, fullname, rolenm, "
166
"studentid FROM login")
168
query = ("SELECT login, state, unixid, email, nick, fullname, "
169
"rolenm, studentid FROM login")
167
170
if dry: return query
168
171
return self.db.query(query).dictresult()