mirror of
https://github.com/wassname/pyramid_formalchemy.git
synced 2026-06-27 16:10:40 +08:00
+5
-1
@@ -1,7 +1,11 @@
|
||||
0.4.2 (unreleased)
|
||||
------------------
|
||||
|
||||
- Nothing changed yet.
|
||||
- Pyramid 1.1 compatibility (amleczko)
|
||||
|
||||
- Adding IBeforeListingRenderEvent (amleczko)
|
||||
|
||||
- Fix problem with formalchemy_model_view registration (amleczko)
|
||||
|
||||
|
||||
0.4.1 (2011-07-01)
|
||||
|
||||
@@ -25,8 +25,8 @@ def formalchemy_model_view(config, route_name,
|
||||
|
||||
model = config.maybe_dotted(model)
|
||||
context = config.maybe_dotted(context)
|
||||
mixin_name = '%sCustom%s_%s_%s' % (model.__name__, context.__name__,
|
||||
route_name, kwargs.get('request_method','GET'))
|
||||
mixin_name = '%sCustom%s_%s_%s_%s' % (model.__name__, context.__name__,
|
||||
route_name, name, kwargs.get('request_method','GET'))
|
||||
|
||||
factory = type(mixin_name, (context,), {})
|
||||
config.registry.pyramid_formalchemy_views[factory.__name__] = factory
|
||||
@@ -98,7 +98,8 @@ def formalchemy_admin(config, route_name,
|
||||
url = request.route_url(route_name, traverse=(), **matchdict)
|
||||
return HTTPFound(location=url)
|
||||
|
||||
config.add_route('%s_redirect' % route_name, route_name, redirect)
|
||||
config.add_route('%s_redirect' % route_name, route_name)
|
||||
config.add_view(redirect, route_name = '%s_redirect' % route_name)
|
||||
|
||||
config.add_route(route_name, '%s/*traverse' % route_name,
|
||||
factory=factory)
|
||||
|
||||
@@ -30,12 +30,16 @@ class IBeforeRenderEvent(zope.component.interfaces.IObjectEvent):
|
||||
"""A model will rendered"""
|
||||
|
||||
|
||||
class IBeforeListingRenderEvent(IBeforeRenderEvent):
|
||||
"""Listing will be rendered"""
|
||||
|
||||
|
||||
class IBeforeShowRenderEvent(IBeforeRenderEvent):
|
||||
"""Show will be rendered"""
|
||||
|
||||
|
||||
class IBeforeEditRenderEvent(IBeforeRenderEvent):
|
||||
"""Show will be rendered"""
|
||||
"""Edit will be rendered"""
|
||||
|
||||
|
||||
class BeforeValidateEvent(zope.component.interfaces.ObjectEvent):
|
||||
|
||||
@@ -100,7 +100,7 @@ class Models(Base):
|
||||
|
||||
self.request.model_name = item
|
||||
model_class = self.get_model()
|
||||
mixin_name = '%sCustom%s_%s_%s' % (model_class.__name__, ModelListing.__name__,
|
||||
mixin_name = '%sCustom%s_%s__%s' % (model_class.__name__, ModelListing.__name__,
|
||||
self.request.route_name, self.request.method)
|
||||
mixin = type(mixin_name, (ModelListing, ), {})
|
||||
factory = self.request.registry.pyramid_formalchemy_views.get(mixin.__name__, mixin)
|
||||
@@ -134,8 +134,12 @@ class ModelListing(Base):
|
||||
self.request.format = item
|
||||
return self
|
||||
|
||||
mixin_name = '%sCustom%s_%s_%s' % (self.request.model_class.__name__, Model.__name__,
|
||||
self.request.route_name, self.request.method)
|
||||
name = self.request.path.split('/')[-1] #view name
|
||||
if name == item:
|
||||
name = ''
|
||||
|
||||
mixin_name = '%sCustom%s_%s_%s_%s' % (self.request.model_class.__name__, Model.__name__,
|
||||
self.request.route_name, name, self.request.method)
|
||||
mixin = type(str(mixin_name), (Model, ), {})
|
||||
factory = self.request.registry.pyramid_formalchemy_views.get(mixin.__name__, mixin)
|
||||
try:
|
||||
|
||||
@@ -306,6 +306,11 @@ class ModelView(object):
|
||||
fs = self.get_grid()
|
||||
fs = fs.bind(instances=page, request=self.request)
|
||||
fs.readonly = True
|
||||
|
||||
event = events.BeforeRenderEvent(self.request.model_class(), self.request, fs=fs, page=page)
|
||||
alsoProvides(event, events.IBeforeListingRenderEvent)
|
||||
zope.component.event.objectEventNotify(event)
|
||||
|
||||
if self.request.format == 'json':
|
||||
values = []
|
||||
request = self.request
|
||||
|
||||
@@ -27,3 +27,8 @@ def before_foo_show_render(context, event):
|
||||
@events.subscriber([Foo, events.IBeforeEditRenderEvent])
|
||||
def before_foo_edit_render(context, event):
|
||||
log.info("%r foo edit will be rendered" % event.object)
|
||||
|
||||
@events.subscriber([Foo, events.IBeforeListingRenderEvent])
|
||||
def before_foo_listing_render(context, event):
|
||||
log.info("%r listing will be rendered" % context)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user