pyramid_formalchemy event implementation

This commit is contained in:
Andrew Mleczko
2011-06-17 18:00:39 +02:00
parent 5e096f7426
commit 5a26067255
2 changed files with 100 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
import zope.component
class IBeforeValidateEvent(zope.component.interfaces.IObjectEvent):
"""A model will be validated"""
class IAfterSyncEvent(zope.component.interfaces.IObjectEvent):
"""A model was synced with DB"""
class IBeforeDeleteEvent(zope.component.interfaces.IObjectEvent):
"""A model will be deleted"""
class IBeforeRenderEvent(zope.component.interfaces.IObjectEvent):
"""A model will rendered"""
class IBeforeShowRenderEvent(IBeforeRenderEvent):
"""Show will be rendered"""
class IBeforeEditRenderEvent(IBeforeRenderEvent):
"""Show will be rendered"""
class BeforeValidateEvent(zope.component.interfaces.ObjectEvent):
"""A model will be validated"""
zope.interface.implements(IBeforeValidateEvent)
def __init__(self, object, fs, request):
self.object = object
self.fs = fs
self.request = request
class AfterSyncEvent(zope.component.interfaces.ObjectEvent):
"""A model was synced with DB"""
zope.interface.implements(IAfterSyncEvent)
def __init__(self, object, fs, request):
self.object = object
self.fs = fs
self.request = request
class BeforeDeleteEvent(zope.component.interfaces.ObjectEvent):
"""A model will be deleted"""
zope.interface.implements(IBeforeDeleteEvent)
def __init__(self, object, request):
self.object = object
self.request = request
class BeforeRenderEvent(zope.component.interfaces.ObjectEvent):
"""A model will rendered"""
zope.interface.implements(IBeforeRenderEvent)
def __init__(self, object, request, **kwargs):
self.object = object
self.request = request
self.kwargs = kwargs
class subscriber(object):
"""event subscriber decorator"""
def __init__(self, ifaces):
self.ifaces = ifaces
def __call__(self, func):
zope.component.provideHandler(func, self.ifaces)
+29
View File
@@ -0,0 +1,29 @@
from pyramid_formalchemy import events
from pyramidapp.models import Foo
import logging
log = logging.getLogger(__name__)
@events.subscriber([Foo, events.IBeforeValidateEvent])
def before_foo_validate(context, event):
log.info("%r will be validated" % context)
@events.subscriber([Foo, events.IAfterSyncEvent])
def after_foo_sync(context, event):
log.info("%r foo has been synced" % context)
@events.subscriber([Foo, events.IBeforeDeleteEvent])
def before_foo_delete(context, event):
log.info("%r foo will be deleted" % context)
@events.subscriber([Foo, events.IBeforeRenderEvent])
def before_foo_render(context, event):
log.info("%r foo will be rendered" % event.object)
@events.subscriber([Foo, events.IBeforeShowRenderEvent])
def before_foo_show_render(context, event):
log.info("%r foo show will be rendered" % event.object)
@events.subscriber([Foo, events.IBeforeEditRenderEvent])
def before_foo_edit_render(context, event):
log.info("%r foo edit will be rendered" % event.object)