fix updating a collection if you don't have access to all the cases

This commit is contained in:
Ross
2024-04-10 23:24:41 +01:00
parent e8f862c7bd
commit dff4705d72
3 changed files with 8 additions and 5 deletions
+2 -2
View File
@@ -464,10 +464,10 @@ class CaseSeriesForm(ModelForm):
class CaseCollectionCaseForm(ModelForm): class CaseCollectionCaseForm(ModelForm):
def __init__(self, *args, user, **kwargs): def __init__(self, *args, user, collection, **kwargs):
super(CaseCollectionCaseForm, self).__init__(*args, **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( self.fields["case"] = ModelChoiceField(
required=False, required=False,
+4 -1
View File
@@ -1,8 +1,11 @@
from atlas.models import Case 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""" """Returns a queryset of cases available to the user"""
queryset = Case.objects.filter(author=user) | Case.objects.filter(open_access=True) 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") return queryset.order_by("pk")
if user.is_superuser: if user.is_superuser:
return Case.objects.all() return Case.objects.all()
+2 -2
View File
@@ -687,12 +687,12 @@ class CaseCollectionUpdate(RevisionMixin, AuthorOrCheckerRequiredMixin, UpdateVi
self.request.POST, self.request.POST,
self.request.FILES, self.request.FILES,
instance=self.object, instance=self.object,
form_kwargs={"user": self.request.user}, form_kwargs={"user": self.request.user, "collection": self.object},
) )
context["case_formset"].full_clean() context["case_formset"].full_clean()
else: else:
context["case_formset"] = CaseCollectionCaseFormSet( 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"] context["collection"] = context["casecollection"]