diff --git a/CHANGES.txt b/CHANGES.txt index d483145..0b51c21 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,8 @@ - Adding IBeforeListingRenderEvent (amleczko) +- Fix problem with formalchemy_model_view registration (amleczko) + 0.4.1 (2011-07-01) ------------------ diff --git a/pyramid_formalchemy/__init__.py b/pyramid_formalchemy/__init__.py index 5ac86c2..7234eb3 100644 --- a/pyramid_formalchemy/__init__.py +++ b/pyramid_formalchemy/__init__.py @@ -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 diff --git a/pyramid_formalchemy/resources.py b/pyramid_formalchemy/resources.py index 4aae723..c506da0 100644 --- a/pyramid_formalchemy/resources.py +++ b/pyramid_formalchemy/resources.py @@ -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: