diff --git a/edbob/pyramid/views/users.py b/edbob/pyramid/views/users.py
index 0ed80c5..a2e201e 100644
--- a/edbob/pyramid/views/users.py
+++ b/edbob/pyramid/views/users.py
@@ -26,13 +26,14 @@
``edbob.pyramid.views.users`` -- User Views
"""
-from webhelpers.html import literal, tags
+from webhelpers.html import tags
+from webhelpers.html.builder import HTML
import formalchemy
from formalchemy.fields import SelectFieldRenderer
import edbob
-from edbob.db.auth import set_user_password
+from edbob.db import auth
from edbob.pyramid import Session
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
@@ -86,22 +87,22 @@ class UsersGrid(SearchableAlchemyGridView):
return g
-class _RolesFieldRenderer(SelectFieldRenderer):
-
- def render_readonly(self, **kwargs):
- roles = Session.query(edbob.Role)
- res = literal('
')
- for uuid in self.value:
- role = roles.get(uuid)
- res += literal('- %s
' % (
- tags.link_to(role.name,
- self.request.route_url('role.read', uuid=role.uuid))))
- res += literal('
')
- return res
-
-
def RolesFieldRenderer(request):
- return type('RolesFieldRenderer', (_RolesFieldRenderer,), {'request': request})
+
+ class RolesFieldRenderer(SelectFieldRenderer):
+
+ def render_readonly(self, **kwargs):
+ roles = Session.query(edbob.Role)
+ html = ''
+ for uuid in self.value:
+ role = roles.get(uuid)
+ link = tags.link_to(
+ role.name, request.route_url('role.read', uuid=role.uuid))
+ html += HTML.tag('li', c=link)
+ html = HTML.tag('ul', c=html)
+ return html
+
+ return RolesFieldRenderer
class RolesField(formalchemy.Field):
@@ -117,6 +118,7 @@ class RolesField(formalchemy.Field):
def get_options(self):
q = Session.query(edbob.Role.name, edbob.Role.uuid)
+ q = q.filter(edbob.Role.uuid != auth.guest_role(Session()).uuid)
q = q.order_by(edbob.Role.name)
return q.all()
@@ -180,7 +182,7 @@ class PasswordField(formalchemy.Field):
if not self.is_readonly():
password = self.renderer.deserialize()
if password:
- set_user_password(self.model, password)
+ auth.set_user_password(self.model, password)
class UserCrud(CrudView):