Использую встроенный Security механизм в пирамиде, как описано в туториале.
Только мне нужно, чтобы юзера, роли и т.п. читались из базы данных.
Тут вроде всё просто, всё работает, но теперь возникла проблемка - нужно проверять права не просто на весь view, а проверять права при срабатывании некоторых условий.
Например:
У меня есть view, который отображает клиента.
Переходим по ссылке http://localhost/client/58
Внутри view выбираем клиента, смотрим какой он группе принадлежит.
Если клиент принадлежит какой-то группе, то давать юзеру доступ, иначе не давать.
В пирамиде на весь view можно выдать права:
@view_config(route_name='client.view', renderer='../templates/client/view.pt', permission='read') def cview(request): cid = request.matchdict['id'] client = DBSession.query(Client).filter_by(id=cid).first() return dict(client=client)
А можно ли как-то красиво сказать пирамиде, чтобы она проверила ещё какой-то признак клиента, прежде чем решить вопрос доступности ресурса?