exclude guest when editing user roles

This commit is contained in:
Lance Edgar 2012-11-12 22:53:27 -08:00
parent c79d6de56d
commit c2339ba124

View file

@ -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('<ul>')
for uuid in self.value:
role = roles.get(uuid)
res += literal('<li>%s</li>' % (
tags.link_to(role.name,
self.request.route_url('role.read', uuid=role.uuid))))
res += literal('</ul>')
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):