Как передать параметры URL для повторения пользовательских тестов предикатов

Я хотел бы создать пользовательскую проверку предикатов repoze, которая способна получить доступ к параметрам URL и что-то проверить. Но я хотел бы использовать allow_only для установки этой проверки прав доступа во всех областях видимости контроллера. Что-то вроде:

class MyController(BaseController):

    allow_only = All(not_anonymous(msg=l_(u'You must be logged on')),
                     my_custom_predicate(msg=l_(u'something wrong')))

    def index(self, **kw):
        return dict()

затем my_custom_predicate должен проверять параметры URL для каждого запроса в каждом методе MyController и делать то, что он делает. Проблема только в том, как разрешить my_custom_predicate проверять параметры URL, используя его так, как я писал выше.

1 ответ

Решение

Может быть, вам нужно использовать ControllerProtector

from repoze.what.plugins.pylonshq import ControllerProtector

allow_only = All(not_anonymous(msg=l_(u'You must be logged on')),
                     my_custom_predicate(msg=l_(u'something wrong')))

@ControllerProtector(allow_only)
class MyController(BaseController):

    def index(self, **kw):
        return dict()

См. Документы на http://code.gustavonarea.net/repoze.what-pylons/API.html

Другие вопросы по тегам