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"]