Merge pull request #13 from amleczko/master

Pyramid 1.1 compatibility
This commit is contained in:
Gael Pasgrimaud
2011-08-27 07:35:31 -07:00
6 changed files with 31 additions and 8 deletions
+5 -1
View File
@@ -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)
+4 -3
View File
@@ -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)
+5 -1
View File
@@ -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):
+7 -3
View File
@@ -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:
+5
View File
@@ -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
+5
View File
@@ -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)