diff --git a/edbob/pyramid/templates/users/base.mako b/edbob/pyramid/templates/users/base.mako deleted file mode 100644 index 27f7dd9..0000000 --- a/edbob/pyramid/templates/users/base.mako +++ /dev/null @@ -1,2 +0,0 @@ -<%inherit file="/base.mako" /> -${parent.body()} diff --git a/edbob/pyramid/templates/users/crud.mako b/edbob/pyramid/templates/users/crud.mako index c9314e9..2e5a70e 100644 --- a/edbob/pyramid/templates/users/crud.mako +++ b/edbob/pyramid/templates/users/crud.mako @@ -1,10 +1,12 @@ -<%inherit file="/users/base.mako" /> <%inherit file="/crud.mako" /> -<%def name="crud_name()">User - <%def name="context_menu_items()"> -
  • ${h.link_to("Back to Users", url('users.list'))}
  • +
  • ${h.link_to("Back to Users", url('users'))}
  • + % if form.readonly: +
  • ${h.link_to("Edit this User", url('user.update', uuid=form.fieldset.model.uuid))}
  • + % elif form.updating: +
  • ${h.link_to("View this User", url('user.read', uuid=form.fieldset.model.uuid))}
  • + % endif ${parent.body()} diff --git a/edbob/pyramid/templates/users/edit.mako b/edbob/pyramid/templates/users/edit.mako deleted file mode 100644 index 77fd24c..0000000 --- a/edbob/pyramid/templates/users/edit.mako +++ /dev/null @@ -1,2 +0,0 @@ -<%inherit file="/users/crud.mako" /> -${parent.body()} diff --git a/edbob/pyramid/templates/users/index.mako b/edbob/pyramid/templates/users/index.mako index 493a309..c9f9918 100644 --- a/edbob/pyramid/templates/users/index.mako +++ b/edbob/pyramid/templates/users/index.mako @@ -1,10 +1,11 @@ -<%inherit file="/users/base.mako" /> -<%inherit file="/index.mako" /> +<%inherit file="/grid.mako" /> <%def name="title()">Users <%def name="context_menu_items()"> -
  • ${h.link_to("Create a new User", url('user.new'))}
  • + % if request.has_perm('users.create'): +
  • ${h.link_to("Create a new User", url('user.create'))}
  • + % endif ${parent.body()} diff --git a/edbob/pyramid/templates/users/new.mako b/edbob/pyramid/templates/users/new.mako deleted file mode 100644 index 77fd24c..0000000 --- a/edbob/pyramid/templates/users/new.mako +++ /dev/null @@ -1,2 +0,0 @@ -<%inherit file="/users/crud.mako" /> -${parent.body()} diff --git a/edbob/pyramid/views/users.py b/edbob/pyramid/views/users.py index be0a611..1ef9500 100644 --- a/edbob/pyramid/views/users.py +++ b/edbob/pyramid/views/users.py @@ -34,15 +34,13 @@ from formalchemy.fields import SelectFieldRenderer import edbob from edbob.db.auth import set_user_password from edbob.pyramid import Session -from edbob.pyramid.views import SearchableAlchemyGridView -from edbob.pyramid.views.crud import Crud +from edbob.pyramid.views import SearchableAlchemyGridView, CrudView class UsersGrid(SearchableAlchemyGridView): mapped_class = edbob.User - route_name = 'users' - route_url = '/users' + config_prefix = 'users' sort = 'username' def join_map(self): @@ -76,6 +74,15 @@ class UsersGrid(SearchableAlchemyGridView): g.person, ], readonly=True) + if self.request.has_perm('users.read'): + g.clickable = True + g.click_route_name = 'user.read' + if self.request.has_perm('users.update'): + g.editable = True + g.edit_route_name = 'user.update' + if self.request.has_perm('users.delete'): + g.deletable = True + g.delete_route_name = 'user.delete' return g @@ -176,10 +183,10 @@ class PasswordField(formalchemy.Field): set_user_password(self.model, password) -class UserCrud(Crud): +class UserCrud(CrudView): mapped_class = edbob.User - home_route = 'users.list' + home_route = 'users' def fieldset(self, user): fs = self.make_fieldset(user) @@ -213,5 +220,27 @@ class UserCrud(Crud): def includeme(config): - UsersGrid.add_route(config) - UserCrud.add_routes(config) + + config.add_route('users', '/users') + config.add_view(UsersGrid, route_name='users', + renderer='/users/index.mako', + permission='users.list') + + config.add_route('user.create', '/users/new') + config.add_view(UserCrud, attr='create', route_name='user.create', + renderer='/users/crud.mako', + permission='users.create') + + config.add_route('user.read', '/users/{uuid}') + config.add_view(UserCrud, attr='read', route_name='user.read', + renderer='/users/crud.mako', + permission='users.read') + + config.add_route('user.update', '/users/{uuid}/edit') + config.add_view(UserCrud, attr='update', route_name='user.update', + renderer='/users/crud.mako', + permission='users.update') + + config.add_route('user.delete', '/users/{uuid}/delete') + config.add_view(UserCrud, attr='delete', route_name='user.delete', + permission='users.delete')