diff --git a/AKModel/models.py b/AKModel/models.py index 0890e53602abed42f8d544223ddab98e323e3425..26ed0f2142a94b8435b91647c161617face6d433 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -408,8 +408,22 @@ class AK(models.Model): detail_string += f"\n{_('Requirements')}: {', '.join(str(r) for r in self.requirements.all())}" if self.types.count() > 0: detail_string += f"\n{_('Types')}: {', '.join(str(r) for r in self.types.all())}" + + # Find conflicts + # (both directions, those specified for this AK and those were this AK was specified as conflict) + # Deduplicate and order list alphabetically + conflicts = set() if self.conflicts.count() > 0: - detail_string += f"\n{_('Conflicts')}: {', '.join(str(c) for c in self.conflicts.all())}" + for c in self.conflicts.all(): + conflicts.add(str(c)) + if self.conflict.count() > 0: + for c in self.conflict.all(): + conflicts.add(str(c)) + if len(conflicts) > 0: + conflicts = list(conflicts) + conflicts.sort() + detail_string += f"\n{_('Conflicts')}: {', '.join(conflicts)}" + if self.prerequisites.count() > 0: detail_string += f"\n{_('Prerequisites')}: {', '.join(str(p) for p in self.prerequisites.all())}" detail_string += f"\n{_('Availabilities')}: \n{availabilities}" diff --git a/AKScheduling/views.py b/AKScheduling/views.py index 2e549f9f411d0c531110596700af298be4b070c3..d7533f3d4b0eec0b6bef82cf1a3159216a62cf9d 100644 --- a/AKScheduling/views.py +++ b/AKScheduling/views.py @@ -43,7 +43,7 @@ class SchedulingAdminView(AdminViewMixin, FilterByEventSlugMixin, ListView): def get_queryset(self): return super().get_queryset().filter(start__isnull=True).select_related('event', 'ak', 'ak__track', 'ak__category').prefetch_related('ak__types', 'ak__owners', 'ak__conflicts', 'ak__prerequisites', - 'ak__requirements').order_by('ak__track', 'ak') + 'ak__requirements', 'ak__conflict').order_by('ak__track', 'ak') def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(object_list=object_list, **kwargs)