from django import forms from django.utils.functional import cached_property from django.utils.safestring import SafeString from django.utils.translation import gettext as _ from wagtail.admin.staticfiles import versioned_static from wagtail.telepath import Adapter, register from .base import Block __all__ = ["StaticBlock"] class StaticBlock(Block): """ A block that just 'exists' and has no fields. """ def get_admin_text(self): if self.meta.admin_text is None: if self.label: return _("%(label)s: this block has no options.") % { "label": self.label } else: return _("This block has no options.") return self.meta.admin_text def value_from_datadict(self, data, files, prefix): return None def normalize(self, value): return None def render_basic(self, value, context=None): return "" class Meta: admin_text = None default = None class StaticBlockAdapter(Adapter): js_constructor = "wagtail.blocks.StaticBlock" def js_args(self, block): admin_text = block.get_admin_text() if isinstance(admin_text, SafeString): text_or_html = "html" else: text_or_html = "text" return [ block.name, { text_or_html: admin_text, "icon": block.meta.icon, "label": block.label, "description": block.get_description(), "blockDefId": block.definition_prefix, "isPreviewable": block.is_previewable, }, ] @cached_property def media(self): return forms.Media( js=[ versioned_static("wagtailadmin/js/telepath/blocks.js"), ] ) register(StaticBlockAdapter(), StaticBlock)