From 088369e0a53a3602150d6c6c1fe481c4d6bd3507 Mon Sep 17 00:00:00 2001 From: Ross Date: Sun, 5 Dec 2021 18:47:00 +0000 Subject: [PATCH] . --- atlas/filters.py | 25 +++++++++++++++++++------ atlas/forms.py | 27 ++++++++++++++++++++++++++- atlas/tables.py | 27 ++++++++++++++++++++++++++- atlas/urls.py | 1 + atlas/views.py | 13 +++++++++++++ 5 files changed, 85 insertions(+), 8 deletions(-) diff --git a/atlas/filters.py b/atlas/filters.py index a0092c32..ff0179c7 100755 --- a/atlas/filters.py +++ b/atlas/filters.py @@ -1,6 +1,6 @@ import django_filters -from .models import Case, Condition, Series +from .models import Case, Condition, Finding, Series, Structure from django.contrib.auth.models import User def get_authors(request): @@ -47,10 +47,23 @@ class ConditionFilter(django_filters.FilterSet): fields = ("name", "primary", "synonym", "parent", "subspecialty") 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(author__id=request.user.id) 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) + pass + +class StructureFilter(django_filters.FilterSet): + class Meta: + model = Structure + fields = ("name", "primary", "synonym") + + 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 diff --git a/atlas/forms.py b/atlas/forms.py index 3fcb3501..273155df 100755 --- a/atlas/forms.py +++ b/atlas/forms.py @@ -9,7 +9,7 @@ from django.forms import ( ) from django.forms import inlineformset_factory -from atlas.models import Case, Differential, Series, SeriesImage, SeriesFinding, Condition +from atlas.models import Case, Differential, Finding, Series, SeriesImage, SeriesFinding, Condition, Structure from anatomy.models import Modality @@ -33,6 +33,31 @@ class ConditionForm(ModelForm): "synonym": autocomplete.ModelSelect2Multiple( url="atlas:condition-autocomplete" ), + "parent": autocomplete.ModelSelect2Multiple( + url="atlas:condition-autocomplete" + ), + } + +class FindingForm(ModelForm): + class Meta: + model = Finding + exclude = [] + + widgets = { + "synonym": autocomplete.ModelSelect2Multiple( + url="atlas:finding-autocomplete" + ), + } + +class StructureForm(ModelForm): + class Meta: + model = Structure + exclude = [] + + widgets = { + "synonym": autocomplete.ModelSelect2Multiple( + url="atlas:structure-autocomplete" + ), } class SeriesFindingForm(ModelForm): diff --git a/atlas/tables.py b/atlas/tables.py index e6e4753e..951c839f 100755 --- a/atlas/tables.py +++ b/atlas/tables.py @@ -133,8 +133,11 @@ class SeriesTable(tables.Table): ) class ConditionTable(tables.Table): + #edit = tables.LinkColumn( + # "atlas:condition_update", text="Edit", args=[A("pk")], orderable=False + #) edit = tables.LinkColumn( - "atlas:condition_update", text="Edit", args=[A("pk")], orderable=False + "atlas:condition_update", text=A("name"), args=[A("pk")], orderable=False ) view = tables.LinkColumn( "atlas:condition_detail", text="View", args=[A("pk")], orderable=False @@ -152,3 +155,25 @@ class ConditionTable(tables.Table): template_name = "django_tables2/bootstrap4.html" fields = ("name", "primary", "subspecialty") sequence = () + + +class FindingTable(tables.Table): + edit = tables.LinkColumn( + "atlas:finding_update", text="Edit", args=[A("pk")], orderable=False + ) + view = tables.LinkColumn( + "atlas:finding_detail", text="View", args=[A("pk")], orderable=False + ) + delete = tables.LinkColumn( + "atlas:finding_delete", text="Delete", args=[A("pk")], orderable=False + ) + selection = tables.CheckBoxColumn(accessor="pk", orderable=False) + + synonym = tables.ManyToManyColumn(verbose_name="Synonyms") + parent = tables.ManyToManyColumn(verbose_name="Parents") + + class Meta: + model = Finding + template_name = "django_tables2/bootstrap4.html" + fields = ("name", "primary", "subspecialty") + sequence = () \ No newline at end of file diff --git a/atlas/urls.py b/atlas/urls.py index 842deadf..01496a44 100755 --- a/atlas/urls.py +++ b/atlas/urls.py @@ -14,6 +14,7 @@ urlpatterns = [ path("condition/", views.condition_detail, name="condition_detail"), path("condition//delete", views.ConditionDelete.as_view(), name="condition_delete"), path("condition//update", views.ConditionUpdate.as_view(), name="condition_update"), + path("condition//create", views.ConditionCreate.as_view(), name="condition_create"), path("series/", views.series_detail, name="series_detail"), path("series/", views.SeriesView.as_view(), name="series_view"), path("series/", views.series_detail, name="series_detail"), diff --git a/atlas/views.py b/atlas/views.py index 886ef9fe..80eebae2 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -360,6 +360,19 @@ class ConditionUpdate( model = Condition form_class = ConditionForm +class ConditionCreate(RevisionMixin, LoginRequiredMixin, CreateView): + model = Condition + form_class = ConditionForm + +class ConditionUpdate( + RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView +): + model = Condition + form_class = ConditionForm + +class ConditionCreate(RevisionMixin, LoginRequiredMixin, CreateView): + model = Condition + form_class = ConditionForm class AtlasCreateBase(RevisionMixin, LoginRequiredMixin): model = Case