Browse Source

(Temporarily) remove examples as they aren't updated.

master
Erik Stein 7 years ago
parent
commit
22b3f719f9
  1. 373
      content_plugins/examples/content_plugins.py

373
content_plugins/examples/content_plugins.py

@ -1,373 +0,0 @@
"""
Example instantiation of the abstract plugin base classes
"""
"""
from django.db import models
from django.utils.translation import ugettext_lazy as _
from content_editor.models import create_plugin_base
from shared.utils.text import slugify_long
from shared.multilingual.utils.fields import TranslatableCharField
from ..collection.models import ItemBundle, Event, Collection
from ..content.admin import RichTextInlineBase
from ..content import plugins
from ..content.renderer import ContentPluginRenderer
from ..media.models import (
MediaImage,
MediaAudio,
MediaVideo,
MediaDocument,
)
from ..people.models import Person
from ..thesaurus.models import Term
from .models import Page
ContentPluginBase = create_plugin_base(Page)
renderer = ContentPluginRenderer()
@renderer.register()
class RichTextContentPlugin(plugins.RichTextFootnoteMixin, plugins.RichTextBase, ContentPluginBase):
regions = ['main', 'aside', 'intro']
@renderer.register()
class BlockquoteContentPlugin(plugins.RichTextFootnoteMixin, plugins.RichTextBase, ContentPluginBase):
STYLE_CHOICES = plugins.StyleMixin.STYLE_CHOICES + (
('blockquote', _("Blockquote")),
('pullquote', _("Pull Quote")),
('introquote', _("Introductory Quote")),
)
template_name_prefix = 'quote'
regions = ['main', 'intro']
class Meta:
verbose_name = _("quote")
verbose_name_plural = _("quotes")
@renderer.register()
class SectionContentPlugin(plugins.SectionBase, ContentPluginBase):
regions = ['main', 'aside']
# @renderer.register()
# class ImageContentPlugin(plugins.ImageBase, ContentPluginBase):
# regions = ['main', 'aside']
# @renderer.register()
# class DownloadContentPlugin(plugins.DownloadBase, ContentPluginBase):
# regions = ['main', 'aside']
@renderer.register()
class FootnoteContentPlugin(plugins.FootnoteBase, ContentPluginBase):
regions = ['references', 'footnotes']
class BaseObjectElement(plugins.BasePlugin, ContentPluginBase):
STYLE_CHOICES = plugins.StyleMixin.STYLE_CHOICES + (
('minimal', _("Minimal View")),
('extensive', _("Extensive View")),
)
class Meta:
abstract = True
verbose_name = _("object view")
verbose_name_plural = _("objects view")
fk_fieldname = None
regions = ['main', 'aside']
@property
def object(self):
assert self.fk_fieldname, "fk_fieldname not set."
return getattr(self, self.fk_fieldname)
def type_slug(self):
slug = ''
type = getattr(self.object, 'type', None)
if type:
slug = getattr(type, 'internal_slug', '')
return slug
def get_template_names(self):
assert self.fk_fieldname, "fk_fieldname not set."
type_slug = self.type_slug()
style_slug = getattr(self, 'style', None) or 'default'
# Append a potentially defined self.template_name
return [
"curatorialcontent/elements/{path_prefix}/pk/_{pk}.html".format(
path_prefix=self.fk_fieldname, pk=self.object.pk),
"curatorialcontent/elements/{path_prefix}/type/_{style}/_{type}.html".format(
path_prefix=self.fk_fieldname, style=style_slug, type=type_slug),
"curatorialcontent/elements/{path_prefix}/style/_{style}.html".format(
path_prefix=self.fk_fieldname, style=style_slug),
"curatorialcontent/elements/{path_prefix}/type/_{type}.html".format(
path_prefix=self.fk_fieldname, type=type_slug),
"curatorialcontent/elements/{path_prefix}/_default.html".format(
path_prefix=self.fk_fieldname)
] + ([self.template_name] if hasattr(self, 'template_name') else [])
@classmethod
def admin_inline(cls, base_class=None):
assert cls.fk_fieldname, "fk_fieldname not set."
inline = super().admin_inline(base_class=RichTextInlineBase) # TODO Do we need RichTextInlineBase here?
if not inline.raw_id_fields:
inline.raw_id_fields = []
inline.raw_id_fields += [cls.fk_fieldname]
return inline
@renderer.register()
class ItemBundleElement(BaseObjectElement, plugins.StyleMixin):
STYLE_CHOICES = BaseObjectElement.STYLE_CHOICES + (
('teaser', _("Big Top Teaser")),
)
itembundle = models.ForeignKey(ItemBundle, verbose_name=_("ItemBundle"))
fk_fieldname = 'itembundle'
regions = ['main', 'aside']
class Meta:
verbose_name = _("item bundle view")
verbose_name_plural = _("item bundle views")
@renderer.register()
class PersonElement(BaseObjectElement, plugins.StyleMixin):
person = models.ForeignKey(Person, verbose_name=_("Person"))
fk_fieldname = 'person'
regions = ['main', 'aside']
class Meta:
verbose_name = _("person view")
verbose_name_plural = _("person views")
@renderer.register()
class ContributorElement(BaseObjectElement):
person = models.ForeignKey(Person, verbose_name=_("Person"))
CONTRIBUTOR_ROLE_CHOICES = (
('author', _("Author")),
('contributor', _("Contributor")),
)
role = models.CharField(_("role"), max_length=50,
choices=CONTRIBUTOR_ROLE_CHOICES,
default=CONTRIBUTOR_ROLE_CHOICES[0][0], null=False, blank=False)
fk_fieldname = 'person'
regions = ['contributors']
class Meta:
verbose_name = _("contributor")
verbose_name_plural = _("contributors")
@renderer.register()
class TermElement(BaseObjectElement, plugins.StyleMixin):
term = models.ForeignKey(Term, verbose_name=_("Term"))
fk_fieldname = 'term'
regions = ['main', 'aside']
class Meta:
verbose_name = _("term view")
verbose_name_plural = _("term views")
@renderer.register()
class EventElement(BaseObjectElement, plugins.StyleMixin):
event = models.ForeignKey(Event, verbose_name=_("Event"))
fk_fieldname = 'event'
regions = ['main', 'aside']
class Meta:
verbose_name = _("event view")
verbose_name_plural = _("event views")
@renderer.register()
class SubcollectionElement(BaseObjectElement, plugins.StyleMixin):
STYLE_CHOICES = BaseObjectElement.STYLE_CHOICES + (
('index-nav', _("Index Page Navigation")),
)
collection = models.ForeignKey(Collection, verbose_name=_("Subcollection"))
fk_fieldname = 'collection'
regions = ['main', 'aside']
class Meta:
verbose_name = _("collection view")
verbose_name_plural = _("collection views")
@renderer.register()
class MediaImageElement(BaseObjectElement):
image = models.ForeignKey(MediaImage, verbose_name=_("Image"))
caption = TranslatableCharField(_("caption"), max_length=500, null=True, blank=True, help_text=_("image caption"))
fk_fieldname = 'image'
regions = ['main', 'aside']
class Meta:
verbose_name = _("image")
verbose_name_plural = _("images")
def type_slug(self):
return ''
@renderer.register()
class MediaAudioElement(BaseObjectElement):
audio = models.ForeignKey(MediaAudio, verbose_name=_("Audio"))
caption = TranslatableCharField(_("caption"), max_length=500, null=True, blank=True, help_text=_("audio caption"))
fk_fieldname = 'audio'
regions = ['main', 'aside']
class Meta:
verbose_name = _("audio")
verbose_name_plural = _("audio")
@renderer.register()
class MediaVideoElement(BaseObjectElement):
video = models.ForeignKey(MediaVideo, verbose_name=_("Video"))
caption = TranslatableCharField(_("caption"), max_length=500, null=True, blank=True, help_text=_("video caption"))
fk_fieldname = 'video'
regions = ['main', 'aside']
class Meta:
verbose_name = _("video")
verbose_name_plural = _("video")
@renderer.register()
class MediaDocumentElement(BaseObjectElement):
document = models.ForeignKey(MediaDocument, verbose_name=_("Document"))
caption = TranslatableCharField(_("caption"), max_length=500, null=True, blank=True, help_text=_("document caption"))
fk_fieldname = 'document'
regions = ['main', 'aside']
class Meta:
verbose_name = _("document")
verbose_name_plural = _("document")
@renderer.register()
class SubsectionsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside']
template_name_prefix = 'subsections_nav'
class Meta:
verbose_name = _("subsections navigation element")
verbose_name_plural = _("subsections navigation elements")
@renderer.register()
class TeamElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside']
template_name_prefix = 'team'
class Meta:
verbose_name = _("team navigation element")
verbose_name_plural = _("team navigation elements")
@renderer.register()
class ActorsElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside']
template_name_prefix = 'actors'
class Meta:
verbose_name = _("actors navigation element")
verbose_name_plural = _("actors navigation elements")
@renderer.register()
class ArticlesElement(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
regions = ['main', 'aside']
template_name_prefix = 'articles_nav'
class Meta:
verbose_name = _("articles navigation element")
verbose_name_plural = _("articles navigation elements")
#
# Slideshow Elements
class BaseSlideshowContentPlugin(plugins.StyleMixin, plugins.FilesystemTemplateRendererPlugin, ContentPluginBase):
STYLE_CHOICES = (
('black', _("black background")),
('yellow', _("yellow background")),
('white', _("white background")),
)
caption = plugins.TranslatableCleansedRichTextField(_("caption"), blank=True)
template_name_prefix = 'slide'
regions = ['slides']
class Meta:
abstract = True
@classmethod
def admin_inline(cls, base_class=None):
return super().admin_inline(base_class=RichTextInlineBase)
@renderer.register()
class TextSlideshowContentPlugin(BaseSlideshowContentPlugin):
template_name_prefix = 'slide/text/'
regions = ['slides']
class Meta:
verbose_name = _("text slide")
verbose_name_plural = _("text slides")
@renderer.register()
class ItembundleSlideshowContentPlugin(BaseSlideshowContentPlugin):
itembundle = models.ForeignKey(ItemBundle, verbose_name=_("ItemBundle"))
template_name_prefix = 'slide/itembundle/'
regions = ['slides']
class Meta:
verbose_name = _("item bundle slide")
verbose_name_plural = _("item bundle slides")
@classmethod
def admin_inline(cls, base_class=None):
inline = super().admin_inline(base_class=RichTextInlineBase)
if not inline.raw_id_fields:
inline.raw_id_fields = []
inline.raw_id_fields += ['itembundle']
return inline
"""
Loading…
Cancel
Save