Source code for cmsplugin_blocks.plugins.album

from django.utils.translation import gettext_lazy as _

from cms.plugin_base import CMSPluginBase

from smart_media.admin import SmartAdminMixin

from ..admin.album import AlbumItemAdmin
from ..choices_helpers import get_album_template_default
from ..forms.album import AlbumForm
from ..models.album import Album


[docs] class AlbumPlugin(SmartAdminMixin, CMSPluginBase): """ Album interface is able to add/edit/remove items within inline forms. Also used template is dynamically retrieved from "template" value. """ module = _("Blocks") name = _("Album") model = Album form = AlbumForm inlines = (AlbumItemAdmin,) render_template = get_album_template_default() cache = True
[docs] def get_fieldsets(self, request, obj=None): """ Define plugin form fieldsets depending features are enabled or not (when there is no defined feature choices). """ fieldsets = [ (None, { "fields": ( "template", ), }), (_("Content"), { "fields": ( "title", ), }), (_("Options"), { "fields": ( "mass_upload", ), }), ] display_features = True if display_features: fieldsets.append((_("Features"), { "fields": ( "size_features", "color_features", "extra_features", ), })) return tuple(fieldsets)
[docs] def render(self, context, instance, placeholder): context = super().render(context, instance, placeholder) self.render_template = instance.template ressources = instance.album_item.all().order_by("order") context.update({ "instance": instance, "ressources": ressources, }) return context
[docs] def save_model(self, request, obj, form, change): result = super().save_model(request, obj, form, change) # Save awaiting item in memory for item in getattr(obj, "_awaiting_items", []): item.album = obj item.save() return result