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 dee6542fccb73fb0e179e355487d3752a23f2736..04f868be69b32d3a35b80373fa900cae64b4b3a7 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 2090a42682a5fb8a7144f12606363da0b62680a9..373ae6a88f6f42953dfa0b4ffeceb8a26716104b 100644 --- a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html +++ b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html @@ -412,34 +412,36 @@ <td class="lesson-notes"> {{ documentations.0.group_note }} {% for note in notes %} - {% if note.absent %} - <span class="lesson-note-absent"> - {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}. - {% if note.excused %} - <span class="lesson-note-excused"> - {% if note.excuse_type %} - ({{ note.excuse_type.short_name }}) - {% else %} - ({% trans 'e' %}) - {% endif %} - </span> - {% endif %} + {% 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" }}. + {% if note.excused %} + <span class="lesson-note-excused"> + {% if note.excuse_type %} + ({{ note.excuse_type.short_name }}) + {% else %} + ({% trans 'e' %}) + {% endif %} + </span> + {% endif %} </span> - {% endif %} - {% if note.late %} - <span class="lesson-note-late"> - {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}. - ({{ note.late }}′) - {% if note.excused %} - <span class="lesson-note-excused"> - {% if note.excuse_type %} - ({{ note.excuse_type.short_name }}) - {% else %} - ({% trans 'e' %}) - {% endif %} - </span> - {% endif %} + {% endif %} + {% if note.late %} + <span class="lesson-note-late"> + {{ note.person.last_name }}, {{ note.person.first_name|slice:"0:1" }}. + ({{ note.late }}′) + {% if note.excused %} + <span class="lesson-note-excused"> + {% if note.excuse_type %} + ({{ note.excuse_type.short_name }}) + {% else %} + ({% trans 'e' %}) + {% endif %} + </span> + {% endif %} </span> + {% endif %} {% endif %} {% for extra_mark in note.extra_marks.all %} <span> diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 7a041822212b4fca3f8b6a03c7f92f859a19bb33..8dbc88536d34e20b4311abce4a8e99548b7a4a41 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -360,7 +360,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(