From c45ccf8826217ce90a362145578e57c569c1f382 Mon Sep 17 00:00:00 2001 From: Erik Stein Date: Mon, 19 Mar 2018 11:45:46 +0100 Subject: [PATCH] Rename path_prefix to template_name_prefix. --- content_plugins/base.py | 22 +++++++------ content_plugins/examples/content_plugins.py | 16 ++++----- content_plugins/plugins/mixins.py | 36 +++++++++++++++------ 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/content_plugins/base.py b/content_plugins/base.py index 3d67268..e33f687 100644 --- a/content_plugins/base.py +++ b/content_plugins/base.py @@ -85,20 +85,24 @@ class StringRendererPlugin(BasePlugin): class FilesystemTemplateRendererPlugin(BasePlugin): template_name = None - path_prefix = 'plugins/' # TODO Rename to 'template_name_prefix' + template_name_prefix = 'plugins/' class Meta: abstract = True - def get_path_prefix(self): - return self.path_prefix + def get_template_name_prefix(self): + return getattr(self, 'template_name_prefix', '') def prefixed_path(self, path): - return "{}{}".format(self.get_path_prefix(), path) + return "{}{}".format(self.get_template_name_prefix(), path) def get_template_names(self): - # Per default look first for absolute template_name path and - # template_name path prefixed with path_prefix. + """ + Look first for template_name, + second for prefixed template_name, + then super's template names, + finally prefixed _default.html. + """ if getattr(self, 'template_name', False): template_names = [ self.template_name, @@ -110,8 +114,7 @@ class FilesystemTemplateRendererPlugin(BasePlugin): template_names.extend(super().get_template_names() or []) return template_names + [ - "{path_prefix}_default.html".format( - path_prefix=self.get_path_prefix()) + self.prefixed_path("_default.html") ] @@ -121,7 +124,8 @@ class RichTextBase(StyleMixin, FilesystemTemplateRendererPlugin): else: richtext = CleansedRichTextField(_("text"), blank=True) - path_prefix = FilesystemTemplateRendererPlugin.path_prefix + 'richtext/' + template_name_prefix = \ + FilesystemTemplateRendererPlugin.template_name_prefix + 'richtext/' class Meta: abstract = True diff --git a/content_plugins/examples/content_plugins.py b/content_plugins/examples/content_plugins.py index cb4b5dd..39fec4f 100644 --- a/content_plugins/examples/content_plugins.py +++ b/content_plugins/examples/content_plugins.py @@ -44,7 +44,7 @@ class BlockquoteContentPlugin(plugins.RichTextFootnoteMixin, plugins.RichTextBas ('introquote', _("Introductory Quote")), ) - path_prefix = 'quote' + template_name_prefix = 'quote' regions = ['main', 'intro'] @@ -275,7 +275,7 @@ class MediaDocumentElement(BaseObjectElement): class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): regions = ['main', 'aside'] - path_prefix = 'subsections_nav' + template_name_prefix = 'subsections_nav' class Meta: verbose_name = _("subsections navigation element") @@ -286,7 +286,7 @@ class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererP class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): regions = ['main', 'aside'] - path_prefix = 'team' + template_name_prefix = 'team' class Meta: verbose_name = _("team navigation element") @@ -297,7 +297,7 @@ class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): regions = ['main', 'aside'] - path_prefix = 'actors' + template_name_prefix = 'actors' class Meta: verbose_name = _("actors navigation element") @@ -308,7 +308,7 @@ class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin class ArticlesElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): regions = ['main', 'aside'] - path_prefix = 'articles_nav' + template_name_prefix = 'articles_nav' class Meta: verbose_name = _("articles navigation element") @@ -327,7 +327,7 @@ class BaseSlideshowContentPlugin(plugins.StyleMixin, plugins.FilesystemTemplateR caption = plugins.TranslatableCleansedRichTextField(_("caption"), blank=True) - path_prefix = 'slide' + template_name_prefix = 'slide' regions = ['slides'] @@ -341,7 +341,7 @@ class BaseSlideshowContentPlugin(plugins.StyleMixin, plugins.FilesystemTemplateR @renderer.register() class TextSlideshowContentPlugin(BaseSlideshowContentPlugin): - path_prefix = 'slide/text/' + template_name_prefix = 'slide/text/' regions = ['slides'] @@ -354,7 +354,7 @@ class TextSlideshowContentPlugin(BaseSlideshowContentPlugin): class ItembundleSlideshowContentPlugin(BaseSlideshowContentPlugin): itembundle = models.ForeignKey(ItemBundle, verbose_name=_("ItemBundle")) - path_prefix = 'slide/itembundle/' + template_name_prefix = 'slide/itembundle/' regions = ['slides'] diff --git a/content_plugins/plugins/mixins.py b/content_plugins/plugins/mixins.py index 5c62807..8d4eca3 100644 --- a/content_plugins/plugins/mixins.py +++ b/content_plugins/plugins/mixins.py @@ -25,14 +25,30 @@ class StyleMixin(models.Model): def get_style_slug(self): return getattr(self, 'style', None) or 'default' - def get_template_names(self): - # Should only be called by classes using filesystem templates - template_names = super().get_template_names() or [] - template_names.extend([ - "{path_prefix}style/_{style}.html".format( - path_prefix=self.get_path_prefix(), - style=self.get_style_slug()), - ]) - return template_names - + # Compatibiliy with super classes not having a prefixed_path method + def prefixed_path(self, path): + if hasattr(super(), 'prefixed_path'): + return super().prefixed_path(path) + else: + return path + def get_template_names(self): + if hasattr(super(), 'get_template_names'): + template_names = super().get_template_names() + else: + template_names = [] + + return template_names + [ + self.prefixed_path( + "style/_{style}.html".format( + style=self.get_style_slug()), + ) + ] + + def get_context_data(self, **kwargs): + if hasattr(super(), 'get_context_data'): + context = super().get_context_data(**kwargs) + else: + context = {} + context['style'] = self.get_style_slug() + return context