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
87
87
will hash the password.
88
Also "state" is not given explicitly; it is implicitly set to
88
90
Raises an exception if the user already exists.
90
92
passhash = _passhash(password)
91
query = ("INSERT INTO login (login, unixid, passhash, nick, fullname,"
92
" rolenm, studentid) VALUES (%s, %d, %s, %s, %s, %s, %s);" %
93
(_escape(login), unixid, _escape(passhash), _escape(nick),
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),
94
97
_escape(fullname), _escape(rolenm), _escape(studentid)))
95
98
if dry: return query
96
99
self.db.query(query)
98
def update_user(self, login, password=None, nick=None,
101
def update_user(self, login, password=None, state=None, nick=None,
99
102
fullname=None, rolenm=None, dry=False):
100
103
"""Updates fields of a particular user. login is the name of the user
101
104
to update. The other arguments are optional fields which may be
142
147
Raises a DBException if the login is not found in the DB.
144
query = ("SELECT login, unixid, nick, fullname, rolenm, studentid "
145
"FROM login WHERE login = %s;" % _escape(login))
149
query = ("SELECT login, state, unixid, nick, fullname, rolenm, "
150
"studentid FROM login WHERE login = %s;" % _escape(login))
146
151
if dry: return query
147
152
result = self.db.query(query)
148
153
# Expecting exactly one
157
162
"""Returns a list of all users. The list elements are a dictionary of
158
163
the user's DB fields, excluding the passhash field.
160
query = ("SELECT login, unixid, nick, fullname, rolenm, studentid "
165
query = ("SELECT login, state, unixid, nick, fullname, rolenm, "
166
"studentid FROM login")
162
167
if dry: return query
163
168
return self.db.query(query).dictresult()