diff --git a/atlas/filters.py b/atlas/filters.py index 7d0c8cb4..9efb02bb 100755 --- a/atlas/filters.py +++ b/atlas/filters.py @@ -34,6 +34,18 @@ class SeriesFilter(django_filters.FilterSet): model = Series fields = ("modality","case", "examination", "author") + 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(SeriesFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) + pass + +class ConditionFilter(django_filters.FilterSet): + class Meta: + model = Series + fields = ("name", "primary", "synonym") + 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) diff --git a/atlas/models.py b/atlas/models.py index b2e5609b..1f9c842d 100644 --- a/atlas/models.py +++ b/atlas/models.py @@ -101,7 +101,7 @@ class Condition(SynMixin, models.Model): synonym = models.ManyToManyField("self", blank=True) - primary = models.BooleanField(default="True") + primary = models.BooleanField(default="True"Series) subspecialty = models.ManyToManyField("subspecialty", blank=True) diff --git a/atlas/tables.py b/atlas/tables.py index 1a03a695..927e699f 100755 --- a/atlas/tables.py +++ b/atlas/tables.py @@ -131,3 +131,23 @@ class SeriesTable(tables.Table): """Popup""", record.pk, ) + +class CoditionTable(tables.Table): + edit = tables.LinkColumn( + "atlas:series_update", text="Edit", args=[A("pk")], orderable=False + ) + view = tables.LinkColumn( + "atlas:series_detail", text="View", args=[A("pk")], orderable=False + ) + delete = tables.LinkColumn( + "atlas:series_delete", text="Delete", args=[A("pk")], orderable=False + ) + selection = tables.CheckBoxColumn(accessor="pk", orderable=False) + + synonym = tables.ManyToManyColumn(verbose_name="Synonyms") + + class Meta: + model = Series + template_name = "django_tables2/bootstrap4.html" + fields = ("name", "primary", "subspecialty") + sequence = () diff --git a/atlas/templates/atlas/base.html b/atlas/templates/atlas/base.html index 5080f9fd..c217249c 100755 --- a/atlas/templates/atlas/base.html +++ b/atlas/templates/atlas/base.html @@ -19,6 +19,7 @@ Atlas: {% if request.user.is_authenticated %} Cases / Series / +Conditions / Create Case / Create Series {% endif %} diff --git a/atlas/templates/atlas/condition_detail.html b/atlas/templates/atlas/condition_detail.html new file mode 100755 index 00000000..a367c3b6 --- /dev/null +++ b/atlas/templates/atlas/condition_detail.html @@ -0,0 +1,24 @@ +{% extends 'atlas/base.html' %} + +{% block content %} + + + +
+ {% comment %} Edit + Delete + {% if request.user.is_superuser %} + Admin Edit + {% endif %} {% endcomment %} +
+
+ {{condition.name}}
+ {{condition.primary}}
+ {{condition.synonym}}
+
+ + {% endblock %} + + {% block js %} + + {% endblock %} \ No newline at end of file diff --git a/atlas/urls.py b/atlas/urls.py index fbd4e0d5..01f695da 100755 --- a/atlas/urls.py +++ b/atlas/urls.py @@ -10,6 +10,9 @@ urlpatterns = [ path("author//", views.author_detail, name="author_detail"), path("author/", views.author_list, name="author_list"), path("cases/", views.CaseView.as_view(), name="case_view"), + path("condition/", views.ConditionView.as_view(), name="condition_view"), + path("condition/", views.condition_detail, name="condition_detail"), + 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"), path("series//", views.series_detail, name="series_edit_finding"), diff --git a/atlas/views.py b/atlas/views.py index 5abd79b5..5b147a16 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -45,8 +45,8 @@ from .models import ( SeriesFinding, SeriesImage, ) -from .tables import CaseTable, SeriesTable -from .filters import AtlasFilter, SeriesFilter +from .tables import CaseTable, CoditionTable, SeriesTable +from .filters import AtlasFilter, ConditionFilter, SeriesFilter from django_tables2 import SingleTableView, SingleTableMixin from django_filters.views import FilterView @@ -138,6 +138,20 @@ def series_detail(request, pk, finding_pk=None): }, ) +@login_required +@user_is_author_or_atlas_series_checker_or_atlas_marker +def condition_detail(request, pk, finding_pk=None): + condition = get_object_or_404(Series, pk=pk) + + # logging.debug(atlas.subspecialty.first().name.all()) + return render( + request, + "atlas/condition_detail.html", + { + "condition": condition, + }, + ) + @login_required @user_is_author_or_atlas_checker @@ -490,6 +504,13 @@ class SeriesView(LoginRequiredMixin, SingleTableMixin, FilterView): filterset_class = SeriesFilter +class ConditionView(LoginRequiredMixin, SingleTableMixin, FilterView): + model = Series + table_class = CoditionTable + template_name = "atlas/view.html" + + filterset_class = ConditionFilter + @login_required @user_is_author_or_atlas_series_checker