mirror of
https://github.com/wassname/pyramid_formalchemy.git
synced 2026-06-27 16:10:40 +08:00
pyramid_formalchemy event implementation
This commit is contained in:
@@ -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)
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user