From 7dcaa4f4395f28b4e28217da5df4a52b3c46bac4 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 6 Dec 2021 16:41:32 +0000 Subject: [PATCH] . --- atlas/filters.py | 98 +++++++++++++++++++++++++++++++++++++++--------- atlas/models.py | 2 +- atlas/views.py | 4 +- 3 files changed, 83 insertions(+), 21 deletions(-) diff --git a/atlas/filters.py b/atlas/filters.py index 77bedef7..cd59a77d 100755 --- a/atlas/filters.py +++ b/atlas/filters.py @@ -3,6 +3,7 @@ import django_filters from .models import Case, Condition, Finding, Series, Structure from django.contrib.auth.models import User + def get_authors(request): if request is None: return User.objects.none() @@ -15,55 +16,116 @@ def get_authors(request): return queryset -class AtlasFilter(django_filters.FilterSet): - author = django_filters.ModelMultipleChoiceFilter(queryset=get_authors, null_label="No author") +class CaseFilter(django_filters.FilterSet): + author = django_filters.ModelMultipleChoiceFilter( + queryset=get_authors, null_label="No author" + ) + foo = django_filters.filters.ModelMultipleChoiceFilter( + field_name='differential__condition', + to_field_name='Diff', + queryset=Condition.objects.all(), + ) + class Meta: model = Case - fields = (#"site", - "created_date", "open_access", "author") + fields = ("created_date", "open_access", "author") # "site", - def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): + def __init__( + self, + data=None, + queryset=None, + prefix=None, + strict=None, + user=None, + request=None, + ): if not request.user.groups.filter(name="atlas_checker").exists(): - #queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) + # queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) queryset = queryset.filter(author__id=request.user.id) - super(AtlasFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) + super(CaseFilter, self).__init__( + data=data, queryset=queryset, prefix=prefix, request=request + ) pass + class SeriesFilter(django_filters.FilterSet): class Meta: model = Series - fields = ("modality","case", "examination", "author") + fields = ("modality", "case", "examination", "author") - def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): + def __init__( + self, + data=None, + queryset=None, + prefix=None, + strict=None, + user=None, + request=None, + ): if not request.user.groups.filter(name="atlas_checker").exists(): - #queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) + # queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) queryset = queryset.filter(author__id=request.user.id) - super(SeriesFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) + super(SeriesFilter, self).__init__( + data=data, queryset=queryset, prefix=prefix, request=request + ) pass + class ConditionFilter(django_filters.FilterSet): class Meta: model = Condition fields = ("name", "primary", "synonym", "parent", "subspecialty") - def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): - super(ConditionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) + def __init__( + self, + data=None, + queryset=None, + prefix=None, + strict=None, + user=None, + request=None, + ): + super(ConditionFilter, self).__init__( + data=data, queryset=queryset, prefix=prefix, request=request + ) pass + class FindingFilter(django_filters.FilterSet): class Meta: model = Finding fields = ("name", "primary", "synonym") - def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): - super(FindingFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) + def __init__( + self, + data=None, + queryset=None, + prefix=None, + strict=None, + user=None, + request=None, + ): + super(FindingFilter, self).__init__( + data=data, queryset=queryset, prefix=prefix, request=request + ) pass + class StructureFilter(django_filters.FilterSet): class Meta: model = Structure fields = {"name": ["icontains"], "primary": ["exact"], "synonym": ["exact"]} - def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): - super(StructureFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) - pass \ No newline at end of file + def __init__( + self, + data=None, + queryset=None, + prefix=None, + strict=None, + user=None, + request=None, + ): + super(StructureFilter, self).__init__( + data=data, queryset=queryset, prefix=prefix, request=request + ) + pass diff --git a/atlas/models.py b/atlas/models.py index 159c259b..e97925ac 100644 --- a/atlas/models.py +++ b/atlas/models.py @@ -240,7 +240,7 @@ class Case(models.Model): def __str__(self): examinations = [series.get_examination() for series in self.series.all()] - return f"{self.pk}:{self.title} {'/'.join([str(c) for c in self.condition.all()])}, {', '.join(examinations)}" + return f"{self.pk}:{self.title} {'/'.join([str(c) for c in self.condition.all()])} [{', '.join(examinations)}]" class SeriesImage(models.Model): diff --git a/atlas/views.py b/atlas/views.py index 85caf25d..dff96284 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -50,7 +50,7 @@ from .models import ( ) from .tables import CaseTable, ConditionTable, FindingTable, SeriesTable, StructureTable from .filters import ( - AtlasFilter, + CaseFilter, ConditionFilter, FindingFilter, SeriesFilter, @@ -590,7 +590,7 @@ class CaseView(LoginRequiredMixin, SingleTableMixin, FilterView): table_class = CaseTable template_name = "atlas/view.html" - filterset_class = AtlasFilter + filterset_class = CaseFilter class SeriesView(LoginRequiredMixin, SingleTableMixin, FilterView):