Skip to content
Snippets Groups Projects
Verified Commit fbab2b33 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Create revisions for personal notes

parent e4f94f12
No related branches found
No related tags found
1 merge request!86Resolve "Add option to reset personal note ("delete") at students view for class teachers"
......@@ -3,6 +3,7 @@ from typing import Dict, Optional, Union
from django.db.models import Exists, OuterRef, QuerySet
import reversion
from calendarweek import CalendarWeek
from aleksis.apps.chronos.models import LessonPeriod
......@@ -45,21 +46,26 @@ def mark_absent(
# Create and update all personal notes for the discovered lesson periods
for lesson_period in lesson_periods:
personal_note, created = PersonalNote.objects.update_or_create(
person=self,
lesson_period=lesson_period,
week=wanted_week.week,
year=wanted_week.year,
defaults={"absent": absent, "excused": excused, "excuse_type": excuse_type},
)
personal_note.groups_of_person.set(self.member_of.all())
if remarks:
if personal_note.remarks:
personal_note.remarks += "; %s" % remarks
else:
personal_note.remarks = remarks
personal_note.save()
with reversion.create_revision():
personal_note, created = PersonalNote.objects.update_or_create(
person=self,
lesson_period=lesson_period,
week=wanted_week.week,
year=wanted_week.year,
defaults={
"absent": absent,
"excused": excused,
"excuse_type": excuse_type,
},
)
personal_note.groups_of_person.set(self.member_of.all())
if remarks:
if personal_note.remarks:
personal_note.remarks += "; %s" % remarks
else:
personal_note.remarks = remarks
personal_note.save()
@LessonPeriod.method
......
......@@ -127,7 +127,8 @@ def lesson(
or not get_site_preferences()["alsijil__block_personal_notes_for_cancelled"]
):
if personal_note_formset.is_valid():
instances = personal_note_formset.save()
with reversion.create_revision():
instances = personal_note_formset.save()
# Iterate over personal notes and carry changed absences to following lessons
for instance in instances:
......@@ -510,7 +511,12 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
absent=True,
excused=False,
)
notes.update(excused=True, excuse_type=excuse_type)
for note in notes:
note.excused = True
note.excuse_type = excuse_type
with reversion.create_revision():
note.save()
messages.success(
request, _("The absences have been marked as excused.")
)
......@@ -525,7 +531,8 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
if note.absent:
note.excused = True
note.excuse_type = excuse_type
note.save()
with reversion.create_revision():
note.save()
messages.success(
request, _("The absence has been marked as excused.")
)
......@@ -646,8 +653,6 @@ class DeletePersonalNoteView(DetailView):
def post(self, request, *args, **kwargs):
note = self.get_object()
with reversion.create_revision():
self.save()
with reversion.create_revision():
note.reset_values()
messages.success(request, _("The personal note has been deleted."))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment