From e96156ddc8828742f28a8c46b4625e61f388420b Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 11 Mar 2020 16:18:45 +0100 Subject: [PATCH] Add "show_in_timetables" field to announcements - Add JSON field - Add filter method - Add form row Signed-off-by: Jonathan Weth <git@jonathanweth.de> --- aleksis/apps/chronos/forms.py | 6 ++++++ aleksis/apps/chronos/models.py | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/chronos/forms.py b/aleksis/apps/chronos/forms.py index d519ba6c..685f67f7 100644 --- a/aleksis/apps/chronos/forms.py +++ b/aleksis/apps/chronos/forms.py @@ -1,7 +1,10 @@ from django import forms from django_select2.forms import ModelSelect2MultipleWidget +from django.utils.translation import gettext_lazy as _ +from material import Fieldset from .models import LessonSubstitution +from aleksis.core.forms import AnnouncementForm class LessonSubstitutionForm(forms.ModelForm): @@ -17,3 +20,6 @@ class LessonSubstitutionForm(forms.ModelForm): ] ) } + + +AnnouncementForm.add_node_to_layout(Fieldset(_("Options for timetables"), "show_in_timetables")) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 55c5f7c4..704eee74 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -19,9 +19,10 @@ from django.utils.translation import ugettext_lazy as _ from calendarweek.django import CalendarWeek, i18n_day_names_lazy, i18n_day_abbrs_lazy from django_global_request.middleware import get_request +from jsonstore import BooleanField from aleksis.core.mixins import ExtensibleModel -from aleksis.core.models import Group, Person, DashboardWidget +from aleksis.core.models import Group, Person, DashboardWidget, Announcement from aleksis.apps.chronos.util.date import week_weekday_from_date from aleksis.core.util.core_helpers import has_person @@ -552,6 +553,15 @@ class LessonPeriod(ExtensibleModel): indexes = [models.Index(fields=["lesson", "period"])] +@classmethod +def for_timetables(cls): + return cls.objects.filter(show_in_timetables=True) + + +Announcement.for_timetables = for_timetables +Announcement.field(show_in_timetables=BooleanField(verbose_name=_("Show announcement in timetable views?"))) + + class TimetableWidget(DashboardWidget): template = "chronos/widget.html" -- GitLab