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

Merge branch '219-students-are-listed-multiple-times-in-class-register-views'...

Merge branch '219-students-are-listed-multiple-times-in-class-register-views' into 174-instructions-can-be-linked-to-a-document-as-remarks-by-the-group-2
parents 9ebacf89 44ace3bc
No related merge requests found
Pipeline #84195 failed
......@@ -14,6 +14,11 @@ Added
* Add feature to manage instructions and track whether groups have been instructed accordingly (e. g. for alarm plans).
Fixed
~~~~~
* Students were displayed multiple times in class register views.
`2.1`_ - 2022-06-25
-------------------
......
......@@ -250,8 +250,10 @@ def register_object(
else:
persons = Person.objects.all()
persons_qs = register_object.get_personal_notes(persons, wanted_week).filter(
person__member_of__in=request.user.person.owner_of.all()
persons_qs = (
register_object.get_personal_notes(persons, wanted_week)
.filter(person__member_of__in=request.user.person.owner_of.all())
.distinct()
)
# Annotate group roles
......@@ -486,12 +488,16 @@ def week_view(
if not request.user.has_perm("alsijil.view_week_personalnote_rule", instance):
persons_qs = persons_qs.filter(pk=request.user.person.pk)
elif group:
persons_qs = persons_qs.filter(member_of=group).filter(
member_of__in=request.user.person.owner_of.all()
persons_qs = (
persons_qs.filter(member_of=group)
.filter(member_of__in=request.user.person.owner_of.all())
.distinct()
)
else:
persons_qs = persons_qs.filter(member_of__in=groups).filter(
member_of__in=request.user.person.owner_of.all()
persons_qs = (
persons_qs.filter(member_of__in=groups)
.filter(member_of__in=request.user.person.owner_of.all())
.distinct()
)
# Prefetch object permissions for persons and groups the persons are members of
......@@ -802,12 +808,16 @@ def my_students(request: HttpRequest) -> HttpResponse:
new_groups = []
for group in relevant_groups:
persons = group.generate_person_list_with_class_register_statistics(
group.members.prefetch_related(
"primary_group__owners",
Prefetch("member_of", queryset=relevant_groups, to_attr="member_of_prefetched"),
persons = (
group.generate_person_list_with_class_register_statistics(
group.members.prefetch_related(
"primary_group__owners",
Prefetch("member_of", queryset=relevant_groups, to_attr="member_of_prefetched"),
)
)
).filter(member_of__in=request.user.person.owner_of.all())
.filter(member_of__in=request.user.person.owner_of.all())
.distinct()
)
persons_for_group = []
for person in persons:
person.set_object_permission_checker(checker)
......@@ -840,10 +850,10 @@ class StudentsList(PermissionRequiredMixin, DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["group"] = self.object
context[
"persons"
] = self.object.generate_person_list_with_class_register_statistics().filter(
member_of__in=self.request.user.person.owner_of.all()
context["persons"] = (
self.object.generate_person_list_with_class_register_statistics()
.filter(member_of__in=self.request.user.person.owner_of.all())
.distinct()
)
context["extra_marks"] = ExtraMark.objects.all()
context["excuse_types"] = ExcuseType.objects.filter(count_as_absent=True)
......
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