diff --git a/aleksis/apps/chronos/forms.py b/aleksis/apps/chronos/forms.py index 16301fbf5c89ef008fee39ffbc0611ce3ea5afb4..cbec05e91df886da00703c768ac76e882b1bd6c6 100644 --- a/aleksis/apps/chronos/forms.py +++ b/aleksis/apps/chronos/forms.py @@ -11,10 +11,8 @@ class LessonSubstitutionForm(forms.ModelForm): class Meta: model = LessonSubstitution - fields = ["week", "lesson_period", "subject", "teachers", "room", "cancelled"] + fields = ["subject", "teachers", "room", "cancelled"] widgets = { - "week": forms.NumberInput(attrs={"disabled": True}), - "lesson_period": forms.Select(attrs={"disabled": True}), "teachers": ModelSelect2MultipleWidget( search_fields=[ "first_name__icontains", diff --git a/aleksis/apps/chronos/templates/chronos/edit_substitution.html b/aleksis/apps/chronos/templates/chronos/edit_substitution.html index 7f58113afe0f4c09092913b7a0e28dcbbf3e4bf4..297d70139684f71d17b43f3bb4b4c875c985b9a7 100644 --- a/aleksis/apps/chronos/templates/chronos/edit_substitution.html +++ b/aleksis/apps/chronos/templates/chronos/edit_substitution.html @@ -12,6 +12,7 @@ {% block page_title %}{% blocktrans %}Edit substitution{% endblocktrans %}{% endblock %} {% block content %} + <p class="flow-text">{{ date }}: {{ lesson_period }}</p> <form method="post"> {% csrf_token %} @@ -19,7 +20,6 @@ {% include "core/partials/save_button.html" %} {% if substitution %} - {# FIXME Respect year as well #} <a href="{% url 'delete_substitution' substitution.lesson_period.id substitution.week %}" class="btn red waves-effect waves-light"> <i class="material-icons iconify left" data-icon="mdi:delete-outline"></i> {% trans "Delete" %} diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index ebec49468803b158825342158f9d1a863efaed42..de21fe4584f06ac8fd7c622618ff87bbbed98058 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -30,7 +30,7 @@ from .util.chronos_helpers import ( get_substitutions_context_data, get_teachers, ) -from .util.date import CalendarWeek, get_weeks_for_year +from .util.date import CalendarWeek, get_weeks_for_year, week_weekday_to_date from .util.js import date_unix @@ -248,6 +248,8 @@ def edit_substitution(request: HttpRequest, id_: int, week: int) -> HttpResponse lesson_period = get_object_or_404(LessonPeriod, pk=id_) wanted_week = lesson_period.lesson.get_calendar_week(week) + context["lesson_period"] = lesson_period + context["date"] = week_weekday_to_date(wanted_week, lesson_period.period.weekday) lesson_substitution = get_substitution_by_id(request, id_, week) @@ -265,7 +267,12 @@ def edit_substitution(request: HttpRequest, id_: int, week: int) -> HttpResponse if request.method == "POST": if edit_substitution_form.is_valid(): - edit_substitution_form.save(commit=True) + lesson_substitution = edit_substitution_form.save(commit=False) + if not lesson_substitution.pk: + lesson_substitution.lesson_period = lesson_period + lesson_substitution.week = wanted_week.week + lesson_substitution.year = wanted_week.year + lesson_substitution.save() messages.success(request, _("The substitution has been saved."))