from pyramid.view import view_config from pyramid.events import subscriber class Yup(object): def __init__(self, val, config): self.val = val def text(self): return 'path_startswith = %s' % (self.val,) phash = text def __call__(self, event): return getattr(event.response, 'yup', False) class Foo(object): def __init__(self, response): self.response = response class Bar(object): pass @subscriber(Foo) def foo(event): event.response.text += 'foo ' @subscriber(Foo, yup=True) def fooyup(event): event.response.text += 'fooyup ' @subscriber([Foo, Bar]) def foobar(event): event.response.text += 'foobar ' @subscriber([Foo, Bar]) def foobar2(event, context): event.response.text += 'foobar2 ' @subscriber([Foo, Bar], yup=True) def foobaryup(event): event.response.text += 'foobaryup ' @subscriber([Foo, Bar], yup=True) def foobaryup2(event, context): event.response.text += 'foobaryup2 ' @view_config(name='sendfoo') def sendfoo(request): response = request.response response.yup = True request.registry.notify(Foo(response)) return response @view_config(name='sendfoobar') def sendfoobar(request): response = request.response response.yup = True request.registry.notify(Foo(response), Bar()) return response def includeme(config): config.add_subscriber_predicate('yup', Yup) config.scan('tests.pkgs.eventonly')