From 39fd8736b104ff6a9780140bace4b77fdff36f17 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Fri, 19 Feb 2021 22:36:41 +0100 Subject: [PATCH] Make it possible to mark DashboardWidgets as broken --- .../migrations/0010_dashboardwidget_broken.py | 18 ++++++++++++++++++ aleksis/core/models.py | 9 ++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 aleksis/core/migrations/0010_dashboardwidget_broken.py diff --git a/aleksis/core/migrations/0010_dashboardwidget_broken.py b/aleksis/core/migrations/0010_dashboardwidget_broken.py new file mode 100644 index 000000000..ca49d4e15 --- /dev/null +++ b/aleksis/core/migrations/0010_dashboardwidget_broken.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.4 on 2021-02-19 13:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0009_default_dashboard'), + ] + + operations = [ + migrations.AddField( + model_name='dashboardwidget', + name='broken', + field=models.BooleanField(default=False, verbose_name='Widget is broken'), + ), + ] diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 24b6c8ca1..04bc77b7a 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -698,10 +698,12 @@ class DashboardWidget(PolymorphicModel, PureDjangoModel): return media template = None + template_broken = None media = Media() title = models.CharField(max_length=150, verbose_name=_("Widget Title")) active = models.BooleanField(verbose_name=_("Activate Widget")) + broken = models.BooleanField(verbose_name=_("Widget is broken"), default=False) size_s = models.PositiveSmallIntegerField( verbose_name=_("Size on mobile devices"), @@ -736,8 +738,13 @@ class DashboardWidget(PolymorphicModel, PureDjangoModel): """Get template. Get the template to render the widget with. Defaults to the template attribute, - but can be overridden to allow more complex template generation scenarios. + but can be overridden to allow more complex template generation scenarios. If + the widget is marked as broken, the template_broken attribute will be returned. """ + if not self.template: + raise NotImplementedError("A widget subclass needs to define a template.") + if self.broken and self.template_broken: + return self.template_broken return self.template def __str__(self): -- GitLab