This commit is contained in:
Ross
2022-03-29 22:26:41 +01:00
parent 926634395a
commit 7704132897
3 changed files with 35 additions and 4 deletions
+28 -2
View File
@@ -24,11 +24,35 @@ def get_authors(request):
return queryset return queryset
def get_cases(request):
if request is None:
return Case.objects.none()
if not request.user.groups.filter(name="atlas_editor").exists():
queryset = Case.objects.filter(author__id=request.user.id)
else:
queryset = Case.objects.all()
return queryset
def get_series(request):
if request is None:
return Series.objects.none()
if not request.user.groups.filter(name="atlas_editor").exists():
queryset = Series.objects.filter(author__id=request.user.id)
else:
queryset = Series.objects.all()
return queryset
class CaseFilter(django_filters.FilterSet): class CaseFilter(django_filters.FilterSet):
author = django_filters.ModelMultipleChoiceFilter( author = django_filters.ModelMultipleChoiceFilter(
queryset=get_authors, null_label="No author" queryset=get_authors, null_label="No author"
) )
series = django_filters.ModelMultipleChoiceFilter(
queryset=get_series, null_label="No series"
)
differential_case = django_filters.ModelMultipleChoiceFilter( differential_case = django_filters.ModelMultipleChoiceFilter(
label="Differential", label="Differential",
field_name="differentialcase__condition", field_name="differentialcase__condition",
@@ -55,7 +79,6 @@ class CaseFilter(django_filters.FilterSet):
request=None, request=None,
): ):
if not request.user.groups.filter(name="atlas_editor").exists(): if not request.user.groups.filter(name="atlas_editor").exists():
# queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
queryset = queryset.prefetch_related("author").filter(author__id=request.user.id) queryset = queryset.prefetch_related("author").filter(author__id=request.user.id)
super(CaseFilter, self).__init__( super(CaseFilter, self).__init__(
data=data, queryset=queryset, prefix=prefix, request=request data=data, queryset=queryset, prefix=prefix, request=request
@@ -65,7 +88,10 @@ class CaseFilter(django_filters.FilterSet):
class SeriesFilter(django_filters.FilterSet): class SeriesFilter(django_filters.FilterSet):
case = django_filters.ModelMultipleChoiceFilter( case = django_filters.ModelMultipleChoiceFilter(
queryset=Case.objects.all(), null_label="No case" queryset=get_cases, null_label="No case"
)
author = django_filters.ModelMultipleChoiceFilter(
queryset=get_authors, null_label="No author"
) )
class Meta: class Meta:
+6 -1
View File
@@ -72,7 +72,6 @@ def findMiddle(input_list):
return input_list[int(middle)] return input_list[int(middle)]
return (input_list[int(middle)], input_list[int(middle - 1)]) return (input_list[int(middle)], input_list[int(middle - 1)])
class SynMixin(object): class SynMixin(object):
# class Meta: # class Meta:
# abstract = True # abstract = True
@@ -587,6 +586,12 @@ class CaseCollection(models.Model):
def __str__(self) -> str: def __str__(self) -> str:
return self.name return self.name
def get_author_objects(self):
"""Returns a comma seperated text list of authors"""
authors = [i for i in self.author.all()]
return authors
class CaseDetail(models.Model): class CaseDetail(models.Model):
case = models.ForeignKey(Case, on_delete=models.CASCADE) case = models.ForeignKey(Case, on_delete=models.CASCADE)
collection = models.ForeignKey(CaseCollection, on_delete=models.CASCADE) collection = models.ForeignKey(CaseCollection, on_delete=models.CASCADE)
+1 -1
View File
@@ -455,7 +455,7 @@ class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
return super().form_invalid(form) return super().form_invalid(form)
class CaseCollectionUpdate(RevisionMixin, LoginRequiredMixin, UpdateView): class CaseCollectionUpdate(RevisionMixin, AuthorOrCheckerRequiredMixin, UpdateView):
model = CaseCollection model = CaseCollection
form_class = CaseCollectionForm form_class = CaseCollectionForm