def adminPrivileges(handler, username = None): handler.title("Privileges") requirePriv(handler, 'Admin') undelay(handler) users = User.loadAll(orderby = 'username') counts = {name: len(filter(lambda user: name in user.privileges, users)) for name in privList} if username: print "<style type=\"text/css\">" print "table.granttable tr[username=%s] {" % username print " background-color: #faa;" print "}" print "</style>" print "<h3>List</h3>" print "<table border=\"0\" cellspacing=\"4\">" print "<tr><th>Name</th><th>Grants</th><th>Description</th></tr>" for name, desc in privList.iteritems(): print "<tr><td>%s</td><td>%d</td><td>%s</td></tr>" % (name, counts[name] if name in counts else 0, desc) print "</table>" print "<h3>Grants</h3>" print "<form method=\"post\" action=\"/admin/privileges\">" print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" class=\"granttable\">" print "<tr><td> </td>%s</tr>" % ''.join("<td>%s</td>" % name for name in privList) for user in users: print "<tr username=\"%s\">" % user.username print "<td>%s</td>" % user.username for name in privList: print "<td><input type=\"checkbox\" name=\"grant[%s][%s]\"%s></td>" % (user.username, name, ' checked' if user.hasPrivilege(name) else '') print "</tr>" print "<tr><td> </td><td colspan=\"3\">%s</td></tr>" % Button('Save', type = 'submit').positive() print "</table>" print "</form>"
def adminUsers(handler): handler.title('User Management') requirePriv(handler, 'Admin') print "<style type=\"text/css\">" print "table.list td.right > * {width: 400px;}" print "table.list td.right button {width: 200px;}" # Half of the above value print "</style>" undelay(handler) print "<h3>New User</h3>" print "<form method=\"post\" action=\"/admin/users\">" print "<input type=\"hidden\" name=\"action\" value=\"new\">" print "<table class=\"list\">" print "<tr><td class=\"left\">Username:</td><td class=\"right\"><input type=\"text\" name=\"username\"></td></tr>" print "<tr><td class=\"left\">Privileges:</td><td class=\"right\"><div>" for name, desc in privList.iteritems(): print "<input type=\"checkbox\" name=\"privileges[]\" id=\"priv_%s\" value=\"%s\"%s><label for=\"priv_%s\">%s — %s</label><br>" % (name, name, ' checked' if name in privDefaults else '', name, name, desc) print "</div></td></tr>" if settings.smtpServer: print "<tr><td class=\"left\">Contact:</td><td class=\"right\"><div><input type=\"checkbox\" name=\"send_welcome\" id=\"send_welcome\" checked><label for=\"send_welcome\">Send welcome e-mail</label></div></td></tr>" print "<tr><td class=\"left\"> </td><td class=\"right\">" print Button('Save', id = 'save-button', type = 'submit').positive() print Button('Cancel', type = 'button', url = '/admin').negative() print "</td></tr>" print "</table>" print "</form><br>" print "<h3>Current Users</h3>" users = User.loadAll(orderby = 'username') print "<div class=\"user-list\">" for user in users: print "<div class=\"user-list-entry\"><a href=\"/users/%s\"><img src=\"%s\"></a><br>%s</div>" % (user.username, user.getAvatar(64), user.safe.username) print "</div>" print "<div class=\"clear\"></div>"