Browse Source

Rename path_prefix to template_name_prefix.

master
Erik Stein 7 years ago
parent
commit
c45ccf8826
  1. 22
      content_plugins/base.py
  2. 16
      content_plugins/examples/content_plugins.py
  3. 34
      content_plugins/plugins/mixins.py

22
content_plugins/base.py

@ -85,20 +85,24 @@ class StringRendererPlugin(BasePlugin):
class FilesystemTemplateRendererPlugin(BasePlugin): class FilesystemTemplateRendererPlugin(BasePlugin):
template_name = None template_name = None
path_prefix = 'plugins/' # TODO Rename to 'template_name_prefix' template_name_prefix = 'plugins/'
class Meta: class Meta:
abstract = True abstract = True
def get_path_prefix(self): def get_template_name_prefix(self):
return self.path_prefix return getattr(self, 'template_name_prefix', '')
def prefixed_path(self, path): 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): 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): if getattr(self, 'template_name', False):
template_names = [ template_names = [
self.template_name, self.template_name,
@ -110,8 +114,7 @@ class FilesystemTemplateRendererPlugin(BasePlugin):
template_names.extend(super().get_template_names() or []) template_names.extend(super().get_template_names() or [])
return template_names + [ return template_names + [
"{path_prefix}_default.html".format( self.prefixed_path("_default.html")
path_prefix=self.get_path_prefix())
] ]
@ -121,7 +124,8 @@ class RichTextBase(StyleMixin, FilesystemTemplateRendererPlugin):
else: else:
richtext = CleansedRichTextField(_("text"), blank=True) richtext = CleansedRichTextField(_("text"), blank=True)
path_prefix = FilesystemTemplateRendererPlugin.path_prefix + 'richtext/' template_name_prefix = \
FilesystemTemplateRendererPlugin.template_name_prefix + 'richtext/'
class Meta: class Meta:
abstract = True abstract = True

16
content_plugins/examples/content_plugins.py

@ -44,7 +44,7 @@ class BlockquoteContentPlugin(plugins.RichTextFootnoteMixin, plugins.RichTextBas
('introquote', _("Introductory Quote")), ('introquote', _("Introductory Quote")),
) )
path_prefix = 'quote' template_name_prefix = 'quote'
regions = ['main', 'intro'] regions = ['main', 'intro']
@ -275,7 +275,7 @@ class MediaDocumentElement(BaseObjectElement):
class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside'] regions = ['main', 'aside']
path_prefix = 'subsections_nav' template_name_prefix = 'subsections_nav'
class Meta: class Meta:
verbose_name = _("subsections navigation element") verbose_name = _("subsections navigation element")
@ -286,7 +286,7 @@ class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererP
class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside'] regions = ['main', 'aside']
path_prefix = 'team' template_name_prefix = 'team'
class Meta: class Meta:
verbose_name = _("team navigation element") verbose_name = _("team navigation element")
@ -297,7 +297,7 @@ class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin,
class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside'] regions = ['main', 'aside']
path_prefix = 'actors' template_name_prefix = 'actors'
class Meta: class Meta:
verbose_name = _("actors navigation element") verbose_name = _("actors navigation element")
@ -308,7 +308,7 @@ class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin
class ArticlesElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase): class ArticlesElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside'] regions = ['main', 'aside']
path_prefix = 'articles_nav' template_name_prefix = 'articles_nav'
class Meta: class Meta:
verbose_name = _("articles navigation element") verbose_name = _("articles navigation element")
@ -327,7 +327,7 @@ class BaseSlideshowContentPlugin(plugins.StyleMixin, plugins.FilesystemTemplateR
caption = plugins.TranslatableCleansedRichTextField(_("caption"), blank=True) caption = plugins.TranslatableCleansedRichTextField(_("caption"), blank=True)
path_prefix = 'slide' template_name_prefix = 'slide'
regions = ['slides'] regions = ['slides']
@ -341,7 +341,7 @@ class BaseSlideshowContentPlugin(plugins.StyleMixin, plugins.FilesystemTemplateR
@renderer.register() @renderer.register()
class TextSlideshowContentPlugin(BaseSlideshowContentPlugin): class TextSlideshowContentPlugin(BaseSlideshowContentPlugin):
path_prefix = 'slide/text/' template_name_prefix = 'slide/text/'
regions = ['slides'] regions = ['slides']
@ -354,7 +354,7 @@ class TextSlideshowContentPlugin(BaseSlideshowContentPlugin):
class ItembundleSlideshowContentPlugin(BaseSlideshowContentPlugin): class ItembundleSlideshowContentPlugin(BaseSlideshowContentPlugin):
itembundle = models.ForeignKey(ItemBundle, verbose_name=_("ItemBundle")) itembundle = models.ForeignKey(ItemBundle, verbose_name=_("ItemBundle"))
path_prefix = 'slide/itembundle/' template_name_prefix = 'slide/itembundle/'
regions = ['slides'] regions = ['slides']

34
content_plugins/plugins/mixins.py

@ -25,14 +25,30 @@ class StyleMixin(models.Model):
def get_style_slug(self): def get_style_slug(self):
return getattr(self, 'style', None) or 'default' return getattr(self, 'style', None) or 'default'
# 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): def get_template_names(self):
# Should only be called by classes using filesystem templates if hasattr(super(), 'get_template_names'):
template_names = super().get_template_names() or [] template_names = super().get_template_names()
template_names.extend([ else:
"{path_prefix}style/_{style}.html".format( template_names = []
path_prefix=self.get_path_prefix(),
return template_names + [
self.prefixed_path(
"style/_{style}.html".format(
style=self.get_style_slug()), style=self.get_style_slug()),
]) )
return template_names ]
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

Loading…
Cancel
Save