From 7b17b08a4367990ad5de881497accd5a5e022214 Mon Sep 17 00:00:00 2001 From: Stephen McDonald Date: Tue, 20 Dec 2011 06:49:37 +1100 Subject: [PATCH] Raise a more meaningful error message when someone tries to subclass a custom content type, which isn't supported. --- mezzanine/pages/templatetags/pages_tags.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mezzanine/pages/templatetags/pages_tags.py b/mezzanine/pages/templatetags/pages_tags.py index eb8837b31b..d7230ffc44 100644 --- a/mezzanine/pages/templatetags/pages_tags.py +++ b/mezzanine/pages/templatetags/pages_tags.py @@ -1,6 +1,7 @@ from collections import defaultdict +from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse, NoReverseMatch from django.db.models import get_models from django.template import TemplateSyntaxError, Variable @@ -123,7 +124,14 @@ def set_page_permissions(context, token): """ page = context[token.split_contents()[1]] model = page.get_content_model() - opts = model._meta + try: + opts = model._meta + except AttributeError: + # A missing inner Meta class usually means the Page model + # hasn't been directly subclassed. + error = _("An error occured with the following class. Does " + "it subclass Page directly?") + raise ImproperlyConfigured(error + " '%s'" % page.__class__.__name__) perm_name = opts.app_label + ".%s_" + opts.object_name.lower() request = context["request"] setattr(page, "perms", {})