This commit is contained in:
Ross
2021-12-06 16:41:32 +00:00
parent 2f821a2878
commit 7dcaa4f439
3 changed files with 83 additions and 21 deletions
+80 -18
View File
@@ -3,6 +3,7 @@ import django_filters
from .models import Case, Condition, Finding, Series, Structure from .models import Case, Condition, Finding, Series, Structure
from django.contrib.auth.models import User from django.contrib.auth.models import User
def get_authors(request): def get_authors(request):
if request is None: if request is None:
return User.objects.none() return User.objects.none()
@@ -15,55 +16,116 @@ def get_authors(request):
return queryset return queryset
class AtlasFilter(django_filters.FilterSet): class CaseFilter(django_filters.FilterSet):
author = django_filters.ModelMultipleChoiceFilter(queryset=get_authors, null_label="No author") 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: class Meta:
model = Case model = Case
fields = (#"site", fields = ("created_date", "open_access", "author") # "site",
"created_date", "open_access", "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(): 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) 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 pass
class SeriesFilter(django_filters.FilterSet): class SeriesFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Series 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(): 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) 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 pass
class ConditionFilter(django_filters.FilterSet): class ConditionFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Condition model = Condition
fields = ("name", "primary", "synonym", "parent", "subspecialty") fields = ("name", "primary", "synonym", "parent", "subspecialty")
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): def __init__(
super(ConditionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) 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 pass
class FindingFilter(django_filters.FilterSet): class FindingFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Finding model = Finding
fields = ("name", "primary", "synonym") fields = ("name", "primary", "synonym")
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): def __init__(
super(FindingFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) 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 pass
class StructureFilter(django_filters.FilterSet): class StructureFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Structure model = Structure
fields = {"name": ["icontains"], "primary": ["exact"], "synonym": ["exact"]} fields = {"name": ["icontains"], "primary": ["exact"], "synonym": ["exact"]}
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): def __init__(
super(StructureFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) self,
pass 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
+1 -1
View File
@@ -240,7 +240,7 @@ class Case(models.Model):
def __str__(self): def __str__(self):
examinations = [series.get_examination() for series in self.series.all()] 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): class SeriesImage(models.Model):
+2 -2
View File
@@ -50,7 +50,7 @@ from .models import (
) )
from .tables import CaseTable, ConditionTable, FindingTable, SeriesTable, StructureTable from .tables import CaseTable, ConditionTable, FindingTable, SeriesTable, StructureTable
from .filters import ( from .filters import (
AtlasFilter, CaseFilter,
ConditionFilter, ConditionFilter,
FindingFilter, FindingFilter,
SeriesFilter, SeriesFilter,
@@ -590,7 +590,7 @@ class CaseView(LoginRequiredMixin, SingleTableMixin, FilterView):
table_class = CaseTable table_class = CaseTable
template_name = "atlas/view.html" template_name = "atlas/view.html"
filterset_class = AtlasFilter filterset_class = CaseFilter
class SeriesView(LoginRequiredMixin, SingleTableMixin, FilterView): class SeriesView(LoginRequiredMixin, SingleTableMixin, FilterView):