diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-11-10 11:07:20 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:21 +0100 |
commit | 715be2448ba981981216e0b3bc194e17699efd57 (patch) | |
tree | c68d3be460d2d9e5d5119564ada092084a7aa8c2 /ishtar_common/models.py | |
parent | ddccc8af774abd592a38aa5ed70975a1168720c5 (diff) | |
download | Ishtar-715be2448ba981981216e0b3bc194e17699efd57.tar.bz2 Ishtar-715be2448ba981981216e0b3bc194e17699efd57.zip |
Document: add iframe template for documents
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 07a052470..ee767a4ef 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -59,6 +59,7 @@ from django.core.urlresolvers import reverse, NoReverseMatch from django.db.models import Q, Max, Count, F from django.db.models.signals import post_save, post_delete, m2m_changed from django.db.utils import DatabaseError +from django.template import Context, Template from django.template.defaultfilters import slugify from django.utils.functional import lazy from ishtar_common.utils import ugettext_lazy as _, ugettext, \ @@ -2588,6 +2589,12 @@ post_delete.connect(post_save_cache, sender=SupportType) class Format(GeneralType): + iframe_template = models.TextField( + _("Iframe template"), blank=True, default="", + help_text=_("Template to insert an iframe for this format. Use django " + "template with a {{document}} variable matching the " + "current document.")) + class Meta: verbose_name = _("Format type") verbose_name_plural = _("Format types") @@ -2955,10 +2962,10 @@ class Document(BaseHistorizedItem, CompleteIdentifierItem, OwnPerms, ImageModel, source_free_input = models.CharField( verbose_name=_("Source - free input"), blank=True, null=True, max_length=500) - support_type = models.ForeignKey(SupportType, verbose_name=_("Support"), + support_type = models.ForeignKey(SupportType, verbose_name=_("Medium"), on_delete=models.SET_NULL, blank=True, null=True, ) - format_type = models.ForeignKey(Format, verbose_name=_("Medium"), + format_type = models.ForeignKey(Format, verbose_name=_("Format"), on_delete=models.SET_NULL, blank=True, null=True) scale = models.CharField(_("Scale"), max_length=30, null=True, @@ -3023,6 +3030,16 @@ class Document(BaseHistorizedItem, CompleteIdentifierItem, OwnPerms, ImageModel, return (self.external_id,) @property + def has_iframe(self): + return self.format_type and self.format_type.iframe_template + + def get_iframe(self): + if not self.has_iframe: + return "" + return Template(self.format_type.iframe_template).render( + Context({"document": self})) + + @property def container(self): if not self.container_id: return |