diff --git a/aleksis/apps/alsijil/migrations/0003_groups_of_person.py b/aleksis/apps/alsijil/migrations/0003_groups_of_person.py new file mode 100644 index 0000000000000000000000000000000000000000..c645b663a2b9fe54a019252cc03a613238bf9ab8 --- /dev/null +++ b/aleksis/apps/alsijil/migrations/0003_groups_of_person.py @@ -0,0 +1,33 @@ +# Generated by Django 3.0.8 on 2020-07-22 17:29 + +from django.db import migrations, models + + +def add_groups(apps, schema_editor): + PersonalNote = apps.get_model("alsijil", "PersonalNote") + + db_alias = schema_editor.connection.alias + + for personal_note in PersonalNote.objects.using(db_alias).all(): + groups = list(personal_note.person.member_of.using(db_alias).all()) + personal_note.groups_of_person.set(groups) + personal_note.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("core", "0003_drop_image_cropping"), + ("alsijil", "0002_excuse_type"), + ] + + operations = [ + migrations.AddField( + model_name="personalnote", + name="groups_of_person", + field=models.ManyToManyField( + related_name="_personalnote_groups_of_person_+", to="core.Group" + ), + ), + migrations.RunPython(add_groups), + ] diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index d10243b0deabba12b49d4b3d28211be925f80f79..ea7355d0cc82405df6212b397a26139156bd24d6 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -42,6 +42,7 @@ class PersonalNote(ExtensibleModel): person = models.ForeignKey( "core.Person", models.CASCADE, related_name="personal_notes" ) + groups_of_person = models.ManyToManyField("core.Group", related_name="+") week = models.IntegerField() lesson_period = models.ForeignKey( diff --git a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html index 5b14cc7ad395cb86b75907a02e3551ace5049af6..5e7d9244939a81baa8ce78105edea24af2116e5b 100644 --- a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html +++ b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html @@ -397,7 +397,7 @@ <td class="lesson-homework">{{ documentations.0.homework }}</td> <td class="lesson-notes"> {% for note in notes %} - {% if note.person in group.members.all %} + {% if group in note.groups_of_person.all %} {% if note.absent %} <span class="lesson-note-absent"> {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}. diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index efad0b58c07a8c87cd258e14f728f71c9340786a..01fa397b2a3b462ff1c8bad6156272cd7d99a401 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -334,7 +334,10 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: (lesson_period, documentations, notes, substitution) ) - persons = group.members.annotate( + persons = Person.objects.filter( + personal_notes__groups_of_person=group, + personal_notes__lesson_period__lesson__validity__school_term=current_school_term, + ).annotate( absences_count=Count( "personal_notes__absent", filter=Q(personal_notes__absent=True) ),