From dff4705d7267ef6171d06fa0fb26e4fe2c594fcf Mon Sep 17 00:00:00 2001 From: Ross Date: Wed, 10 Apr 2024 23:24:41 +0100 Subject: [PATCH] fix updating a collection if you don't have access to all the cases --- atlas/forms.py | 4 ++-- atlas/helpers.py | 5 ++++- atlas/views.py | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/atlas/forms.py b/atlas/forms.py index 027699f5..5aa955e3 100755 --- a/atlas/forms.py +++ b/atlas/forms.py @@ -464,10 +464,10 @@ class CaseSeriesForm(ModelForm): class CaseCollectionCaseForm(ModelForm): - def __init__(self, *args, user, **kwargs): + def __init__(self, *args, user, collection, **kwargs): super(CaseCollectionCaseForm, self).__init__(*args, **kwargs) - queryset = get_cases_available_to_user(user) + queryset = get_cases_available_to_user(user, collection=collection) self.fields["case"] = ModelChoiceField( required=False, diff --git a/atlas/helpers.py b/atlas/helpers.py index 06004996..24364b0c 100644 --- a/atlas/helpers.py +++ b/atlas/helpers.py @@ -1,8 +1,11 @@ from atlas.models import Case -def get_cases_available_to_user(user): +def get_cases_available_to_user(user, collection=None): """Returns a queryset of cases available to the user""" queryset = Case.objects.filter(author=user) | Case.objects.filter(open_access=True) + + if collection is not None: + queryset = queryset | collection.cases.all() return queryset.order_by("pk") if user.is_superuser: return Case.objects.all() diff --git a/atlas/views.py b/atlas/views.py index a9228ba4..131185e9 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -687,12 +687,12 @@ class CaseCollectionUpdate(RevisionMixin, AuthorOrCheckerRequiredMixin, UpdateVi self.request.POST, self.request.FILES, instance=self.object, - form_kwargs={"user": self.request.user}, + form_kwargs={"user": self.request.user, "collection": self.object}, ) context["case_formset"].full_clean() else: context["case_formset"] = CaseCollectionCaseFormSet( - instance=self.object, form_kwargs={"user": self.request.user} + instance=self.object, form_kwargs={"user": self.request.user, "collection": self.object} ) context["collection"] = context["casecollection"]