diff --git a/atlas/filters.py b/atlas/filters.py
index 92f0ca87..63461a6d 100755
--- a/atlas/filters.py
+++ b/atlas/filters.py
@@ -1,210 +1,210 @@
-import django_filters
-
-from .models import (
- Case,
- Condition,
- Finding,
- PathologicalProcess,
- Presentation,
- Series,
- Structure,
- Subspecialty,
-)
-from django.contrib.auth.models import User
-
-
-def get_authors(request):
- if request is None:
- return User.objects.none()
-
- if not request.user.groups.filter(name="atlas_editor").exists():
- queryset = User.objects.filter(id=request.user.id)
- else:
- queryset = User.objects.all()
-
- return queryset
-
-
-class CaseFilter(django_filters.FilterSet):
- author = django_filters.ModelMultipleChoiceFilter(
- queryset=get_authors, null_label="No author"
- )
- differential_case = django_filters.ModelMultipleChoiceFilter(
- label="Differential",
- field_name="differentialcase__condition",
- # to_field_name="differential",
- queryset=Condition.objects.all(),
- )
-
- class Meta:
- model = Case
- fields = (
- "created_date",
- "open_access",
- "author",
- "differential_case",
- ) # "site",
-
- def __init__(
- self,
- data=None,
- queryset=None,
- prefix=None,
- strict=None,
- user=None,
- request=None,
- ):
- 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.filter(author__id=request.user.id)
- super(CaseFilter, self).__init__(
- data=data, queryset=queryset, prefix=prefix, request=request
- )
- pass
-
-
-class SeriesFilter(django_filters.FilterSet):
- case = django_filters.ModelMultipleChoiceFilter(
- queryset=Case.objects.all(), null_label="No case"
- )
-
- class Meta:
- 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_editor").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 = 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
- )
- 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": ["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
-
-
-class PresentationFilter(django_filters.FilterSet):
- class Meta:
- model = Presentation
- fields = ("name", "subspecialty")
-
- def __init__(
- self,
- data=None,
- queryset=None,
- prefix=None,
- strict=None,
- user=None,
- request=None,
- ):
- super(PresentationFilter, self).__init__(
- data=data, queryset=queryset, prefix=prefix, request=request
- )
- pass
-
-
-class PathologicalProcessFilter(django_filters.FilterSet):
- class Meta:
- model = PathologicalProcess
- fields = ("name",)
-
- def __init__(
- self,
- data=None,
- queryset=None,
- prefix=None,
- strict=None,
- user=None,
- request=None,
- ):
- super(PathologicalProcessFilter, self).__init__(
- data=data, queryset=queryset, prefix=prefix, request=request
- )
- pass
-
-
-class SubspecialtyFilter(django_filters.FilterSet):
- class Meta:
- model = Subspecialty
- fields = ("name",)
-
- def __init__(
- self,
- data=None,
- queryset=None,
- prefix=None,
- strict=None,
- user=None,
- request=None,
- ):
- super(SubspecialtyFilter, self).__init__(
- data=data, queryset=queryset, prefix=prefix, request=request
- )
- pass
+import django_filters
+
+from .models import (
+ Case,
+ Condition,
+ Finding,
+ PathologicalProcess,
+ Presentation,
+ Series,
+ Structure,
+ Subspecialty,
+)
+from django.contrib.auth.models import User
+
+
+def get_authors(request):
+ if request is None:
+ return User.objects.none()
+
+ if not request.user.groups.filter(name="atlas_editor").exists():
+ queryset = User.objects.filter(id=request.user.id)
+ else:
+ queryset = User.objects.all()
+
+ return queryset
+
+
+class CaseFilter(django_filters.FilterSet):
+ author = django_filters.ModelMultipleChoiceFilter(
+ queryset=get_authors, null_label="No author"
+ )
+ differential_case = django_filters.ModelMultipleChoiceFilter(
+ label="Differential",
+ field_name="differentialcase__condition",
+ # to_field_name="differential",
+ queryset=Condition.objects.all(),
+ )
+
+ class Meta:
+ model = Case
+ fields = (
+ "created_date",
+ "open_access",
+ "author",
+ "differential_case",
+ ) # "site",
+
+ def __init__(
+ self,
+ data=None,
+ queryset=None,
+ prefix=None,
+ strict=None,
+ user=None,
+ request=None,
+ ):
+ 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)
+ super(CaseFilter, self).__init__(
+ data=data, queryset=queryset, prefix=prefix, request=request
+ )
+ pass
+
+
+class SeriesFilter(django_filters.FilterSet):
+ case = django_filters.ModelMultipleChoiceFilter(
+ queryset=Case.objects.all(), null_label="No case"
+ )
+
+ class Meta:
+ 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_editor").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 = 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
+ )
+ 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": ["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
+
+
+class PresentationFilter(django_filters.FilterSet):
+ class Meta:
+ model = Presentation
+ fields = ("name", "subspecialty")
+
+ def __init__(
+ self,
+ data=None,
+ queryset=None,
+ prefix=None,
+ strict=None,
+ user=None,
+ request=None,
+ ):
+ super(PresentationFilter, self).__init__(
+ data=data, queryset=queryset, prefix=prefix, request=request
+ )
+ pass
+
+
+class PathologicalProcessFilter(django_filters.FilterSet):
+ class Meta:
+ model = PathologicalProcess
+ fields = ("name",)
+
+ def __init__(
+ self,
+ data=None,
+ queryset=None,
+ prefix=None,
+ strict=None,
+ user=None,
+ request=None,
+ ):
+ super(PathologicalProcessFilter, self).__init__(
+ data=data, queryset=queryset, prefix=prefix, request=request
+ )
+ pass
+
+
+class SubspecialtyFilter(django_filters.FilterSet):
+ class Meta:
+ model = Subspecialty
+ fields = ("name",)
+
+ def __init__(
+ self,
+ data=None,
+ queryset=None,
+ prefix=None,
+ strict=None,
+ user=None,
+ request=None,
+ ):
+ super(SubspecialtyFilter, self).__init__(
+ data=data, queryset=queryset, prefix=prefix, request=request
+ )
+ pass
diff --git a/atlas/migrations/0027_auto_20220325_2138.py b/atlas/migrations/0027_auto_20220325_2138.py
new file mode 100644
index 00000000..f47b1021
--- /dev/null
+++ b/atlas/migrations/0027_auto_20220325_2138.py
@@ -0,0 +1,32 @@
+# Generated by Django 3.2.4 on 2022-03-25 21:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('atlas', '0026_auto_20220321_1612'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='casedetail',
+ options={'ordering': ('sort_order',)},
+ ),
+ migrations.AddField(
+ model_name='casecollection',
+ name='show_description',
+ field=models.BooleanField(default=False, help_text='Show the description of the cases'),
+ ),
+ migrations.AddField(
+ model_name='casecollection',
+ name='show_discussion',
+ field=models.BooleanField(default=False, help_text='Show the case discussion'),
+ ),
+ migrations.AddField(
+ model_name='casecollection',
+ name='show_title',
+ field=models.BooleanField(default=False, help_text='Show the title of the cases'),
+ ),
+ ]
diff --git a/atlas/models.py b/atlas/models.py
index 2d842cbd..ccd2f292 100644
--- a/atlas/models.py
+++ b/atlas/models.py
@@ -78,6 +78,12 @@ class SynMixin(object):
# abstract = True
def __str__(self) -> str:
+ if self.primary:
+ return self.name
+ else:
+ return f"{self.name} [syn]"
+
+ def get_old_str(self) -> str:
if self.primary:
if self.synonym.count() == 0:
return self.name
@@ -559,6 +565,10 @@ class CaseCollection(models.Model):
help_text="If a collection should be freely available to browse", default=True
)
+ show_title = models.BooleanField(default=False, help_text="Show the title of the cases")
+ show_description = models.BooleanField(default=False, help_text="Show the description of the cases")
+ show_discussion = models.BooleanField(default=False, help_text="Show the case discussion")
+
def get_absolute_url(self):
return reverse("atlas:collection_detail_view", kwargs={"pk": self.pk})
diff --git a/atlas/tables.py b/atlas/tables.py
index 9044649e..577bb5bc 100755
--- a/atlas/tables.py
+++ b/atlas/tables.py
@@ -1,307 +1,315 @@
-import django_tables2 as tables
-from django_tables2.utils import A
-
-from .models import (
- Case,
- Condition,
- PathologicalProcess,
- Presentation,
- Series,
- Structure,
- Finding,
- Subspecialty,
-)
-
-from django.utils.html import format_html
-
-from easy_thumbnails.files import get_thumbnailer
-
-from easy_thumbnails.exceptions import InvalidImageFormatError
-
-
-class AtlasImageColumn(tables.Column):
- def render(self, value):
- blocks = []
- for obj in value.all():
- blocks.append(obj.get_block())
- return format_html(
- "{}".format("".join(blocks))
- )
-
- obj = value.first()
-
- if obj is None:
- return format_html("No image")
-
- return obj.get_thumbnail()[0]
-
- # image_object = obj.image
- # try:
- # thumbnailer = get_thumbnailer(image_object)
- # return format_html('
', thumbnailer["exam-list"])
- # except InvalidImageFormatError:
- # return format_html('Invalid image url', image_object)
-
-
-class SeriesImageColumn(tables.Column):
- def render(self, value):
- obj = value.first()
-
- if obj is None:
- return "None"
-
- image_object = obj.image
- try:
- thumbnailer = get_thumbnailer(image_object)
- return format_html(
- '
[{}]',
- thumbnailer["exam-list"],
- value.count(),
- )
- except InvalidImageFormatError:
- return format_html(
- 'Invalid image url
[{}]',
- image_object,
- value.count(),
- )
-
-
-class CaseTable(tables.Table):
- edit = tables.LinkColumn(
- "atlas:case_update", text="Edit", args=[A("pk")], orderable=False
- )
- view = tables.LinkColumn(
- "atlas:case_detail", text="View", args=[A("pk")], orderable=False
- )
- clone = tables.LinkColumn(
- "atlas:case_clone", text="Clone", args=[A("pk")], orderable=False
- )
- delete = tables.LinkColumn(
- "atlas:case_delete", text="Delete", args=[A("pk")], orderable=False
- )
- series = AtlasImageColumn("Images", orderable=False)
-
- differential = tables.ManyToManyColumn(verbose_name="Differential")
-
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- class Meta:
- model = Case
- template_name = "django_tables2/bootstrap4.html"
- fields = (
- "title",
- "description",
- "history",
- "condition",
- "created_date",
- "author",
- )
- sequence = ("view", "series")
-
-
-class PopupLinkColumn(tables.Column):
- def render(self, value):
- return format_html("test: {}", value)
- obj = value.first()
-
- if obj is None:
- return format_html("No image")
-
- return obj.get_thumbnail()[0]
-
-
-def create_link(test):
- print(test)
- return "Hello"
-
-
-class SeriesTable(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
- )
- popup = tables.Column(empty_values=(), orderable=False)
-
- images = SeriesImageColumn("Images", orderable=False)
-
- delete = tables.LinkColumn(
- "atlas:series_delete", text="Delete", args=[A("pk")], orderable=False
- )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- case = tables.ManyToManyColumn(verbose_name="Cases")
- findings = tables.ManyToManyColumn(verbose_name="Findings")
- structures = tables.ManyToManyColumn(verbose_name="Structures")
-
- class Meta:
- model = Series
- template_name = "django_tables2/bootstrap4.html"
- fields = (
- "modality",
- "description",
- "examination",
- "plane",
- "contrast",
- "author",
- )
- sequence = ("view", "popup", "images", "case")
-
- def render_popup(self, value, record):
- print(self)
- return format_html(
- """Popup""",
- record.pk,
- )
-
-
-class ConditionTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:condition_detail", {"pk": tables.A("pk")}),
- verbose_name="Condition",
- )
-
- edit = tables.LinkColumn(
- "atlas:condition_update", text="Edit", args=[A("pk")], orderable=False
- )
- delete = tables.LinkColumn(
- "atlas:condition_delete", text="Delete", args=[A("pk")], orderable=False
- )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- # synonym = tables.ManyToManyColumn(verbose_name="Synonyms")
- synonym = tables.Column(empty_values=())
- parent = tables.ManyToManyColumn(verbose_name="Parents")
-
- class Meta:
- model = Condition
- template_name = "django_tables2/bootstrap4.html"
- fields = ("primary", "subspecialty")
- sequence = ("name",)
-
- def render_synonym(self, value, record):
- return format_html(record.get_synonym_link())
- return f"{record.get_synonym_link()}"
-
-
-class FindingTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:finding_detail", {"pk": tables.A("pk")}), verbose_name="Finding"
- )
- edit = tables.LinkColumn(
- "atlas:finding_update", text="Edit", 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")
- synonym = tables.Column(empty_values=())
- parent = tables.ManyToManyColumn(verbose_name="Parents")
-
- class Meta:
- model = Finding
- template_name = "django_tables2/bootstrap4.html"
- fields = ("name", "primary")
- sequence = ("name",)
-
- def render_synonym(self, value, record):
- return format_html(record.get_synonym_link())
-
-
-class StructureTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:structure_detail", {"pk": tables.A("pk")}),
- verbose_name="Structure",
- )
- edit = tables.LinkColumn(
- "atlas:structure_update", text="Edit", args=[A("pk")], orderable=False
- )
- delete = tables.LinkColumn(
- "atlas:structure_delete", text="Delete", args=[A("pk")], orderable=False
- )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- # synonym = tables.ManyToManyColumn(verbose_name="Synonyms")
- synonym = tables.Column(empty_values=())
- parent = tables.ManyToManyColumn(verbose_name="Parents")
-
- class Meta:
- model = Structure
- template_name = "django_tables2/bootstrap4.html"
- fields = ("name", "primary")
- sequence = ("name",)
-
- def render_synonym(self, value, record):
- return format_html(record.get_synonym_link())
-
-
-class PresentationTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:presentation_detail", {"pk": tables.A("pk")}),
- verbose_name="Presentation",
- )
-
- # edit = tables.LinkColumn(
- # "atlas:presentation_update", text="Edit", args=[A("pk")], orderable=False
- # )
- # delete = tables.LinkColumn(
- # "atlas:presentation_delete", text="Delete", args=[A("pk")], orderable=False
- # )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- subspecialty = tables.ManyToManyColumn(verbose_name="Subspecialty")
-
- class Meta:
- model = Presentation
- template_name = "django_tables2/bootstrap4.html"
- fields = ("name",)
- sequence = ("name",)
-
-
-class PathologicalProcessTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:pathological_process_detail", {"pk": tables.A("pk")}),
- verbose_name="PathologicalProcess",
- )
-
- # edit = tables.LinkColumn(
- # "atlas:pathological_process_update", text="Edit", args=[A("pk")], orderable=False
- # )
- # delete = tables.LinkColumn(
- # "atlas:pathological_process_delete", text="Delete", args=[A("pk")], orderable=False
- # )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- class Meta:
- model = PathologicalProcess
- template_name = "django_tables2/bootstrap4.html"
- fields = ("name",)
- sequence = ("name",)
-
-
-class SubspecialtyTable(tables.Table):
- name = tables.Column(
- linkify=("atlas:subspecialty_detail", {"pk": tables.A("pk")}),
- verbose_name="Subspecialty",
- )
-
- # edit = tables.LinkColumn(
- # "atlas:subspecialty_update", text="Edit", args=[A("pk")], orderable=False
- # )
- # delete = tables.LinkColumn(
- # "atlas:subspecialty_delete", text="Delete", args=[A("pk")], orderable=False
- # )
- selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
-
- class Meta:
- model = Subspecialty
- template_name = "django_tables2/bootstrap4.html"
- fields = ()
- sequence = ("name",)
-
- def render_synonym(self, value, record):
- return format_html(record.get_synonym_link())
- return f"{record.get_synonym_link()}"
+import django_tables2 as tables
+from django_tables2.utils import A
+
+from .models import (
+ Case,
+ Condition,
+ PathologicalProcess,
+ Presentation,
+ Series,
+ Structure,
+ Finding,
+ Subspecialty,
+)
+
+from django.utils.html import format_html
+
+from easy_thumbnails.files import get_thumbnailer
+
+from easy_thumbnails.exceptions import InvalidImageFormatError
+
+
+class AtlasImageColumn(tables.Column):
+ def render(self, value):
+ blocks = []
+ for obj in value.all():
+ blocks.append(obj.get_block())
+ return format_html(
+ "{}".format("".join(blocks))
+ )
+
+ obj = value.first()
+
+ if obj is None:
+ return format_html("No image")
+
+ return obj.get_thumbnail()[0]
+
+ # image_object = obj.image
+ # try:
+ # thumbnailer = get_thumbnailer(image_object)
+ # return format_html('
', thumbnailer["exam-list"])
+ # except InvalidImageFormatError:
+ # return format_html('Invalid image url', image_object)
+
+
+class SeriesImageColumn(tables.Column):
+ def render(self, value):
+ obj = value.first()
+
+ if obj is None:
+ return "None"
+
+ image_object = obj.image
+ try:
+ thumbnailer = get_thumbnailer(image_object)
+ return format_html(
+ '
[{}]',
+ thumbnailer["exam-list"],
+ value.count(),
+ )
+ except InvalidImageFormatError:
+ return format_html(
+ 'Invalid image url
[{}]',
+ image_object,
+ value.count(),
+ )
+
+
+class CaseTable(tables.Table):
+ edit = tables.LinkColumn(
+ "atlas:case_update", text="Edit", args=[A("pk")], orderable=False
+ )
+ view = tables.LinkColumn(
+ "atlas:case_detail", text="View", args=[A("pk")], orderable=False
+ )
+ clone = tables.LinkColumn(
+ "atlas:case_clone", text="Clone", args=[A("pk")], orderable=False
+ )
+ delete = tables.LinkColumn(
+ "atlas:case_delete", text="Delete", args=[A("pk")], orderable=False
+ )
+ #series = AtlasImageColumn("Images", orderable=False)
+
+ #differential = tables.ManyToManyColumn(verbose_name="Differential")
+
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ class Meta:
+ model = Case
+ template_name = "django_tables2/bootstrap4.html"
+ fields = (
+ "title",
+ "description",
+ "history",
+ #"condition",
+ "created_date",
+ "author",
+ )
+ sequence = ("view", )#, "series")
+
+ def __init__(self, data=None, *args, **kwargs):
+ super().__init__(
+ data.prefetch_related(
+ #"condition", "condition__synonym"
+ ),
+ *args,
+ **kwargs,
+ )
+
+class PopupLinkColumn(tables.Column):
+ def render(self, value):
+ return format_html("test: {}", value)
+ obj = value.first()
+
+ if obj is None:
+ return format_html("No image")
+
+ return obj.get_thumbnail()[0]
+
+
+def create_link(test):
+ print(test)
+ return "Hello"
+
+
+class SeriesTable(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
+ )
+ popup = tables.Column(empty_values=(), orderable=False)
+
+ images = SeriesImageColumn("Images", orderable=False)
+
+ delete = tables.LinkColumn(
+ "atlas:series_delete", text="Delete", args=[A("pk")], orderable=False
+ )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ case = tables.ManyToManyColumn(verbose_name="Cases")
+ findings = tables.ManyToManyColumn(verbose_name="Findings")
+ structures = tables.ManyToManyColumn(verbose_name="Structures")
+
+ class Meta:
+ model = Series
+ template_name = "django_tables2/bootstrap4.html"
+ fields = (
+ "modality",
+ "description",
+ "examination",
+ "plane",
+ "contrast",
+ "author",
+ )
+ sequence = ("view", "popup", "images", "case")
+
+ def render_popup(self, value, record):
+ print(self)
+ return format_html(
+ """Popup""",
+ record.pk,
+ )
+
+
+class ConditionTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:condition_detail", {"pk": tables.A("pk")}),
+ verbose_name="Condition",
+ )
+
+ edit = tables.LinkColumn(
+ "atlas:condition_update", text="Edit", args=[A("pk")], orderable=False
+ )
+ delete = tables.LinkColumn(
+ "atlas:condition_delete", text="Delete", args=[A("pk")], orderable=False
+ )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ # synonym = tables.ManyToManyColumn(verbose_name="Synonyms")
+ synonym = tables.Column(empty_values=())
+ parent = tables.ManyToManyColumn(verbose_name="Parents")
+
+ class Meta:
+ model = Condition
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ("primary", "subspecialty")
+ sequence = ("name",)
+
+ def render_synonym(self, value, record):
+ return format_html(record.get_synonym_link())
+ return f"{record.get_synonym_link()}"
+
+
+class FindingTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:finding_detail", {"pk": tables.A("pk")}), verbose_name="Finding"
+ )
+ edit = tables.LinkColumn(
+ "atlas:finding_update", text="Edit", 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")
+ synonym = tables.Column(empty_values=())
+ parent = tables.ManyToManyColumn(verbose_name="Parents")
+
+ class Meta:
+ model = Finding
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ("name", "primary")
+ sequence = ("name",)
+
+ def render_synonym(self, value, record):
+ return format_html(record.get_synonym_link())
+
+
+class StructureTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:structure_detail", {"pk": tables.A("pk")}),
+ verbose_name="Structure",
+ )
+ edit = tables.LinkColumn(
+ "atlas:structure_update", text="Edit", args=[A("pk")], orderable=False
+ )
+ delete = tables.LinkColumn(
+ "atlas:structure_delete", text="Delete", args=[A("pk")], orderable=False
+ )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ # synonym = tables.ManyToManyColumn(verbose_name="Synonyms")
+ synonym = tables.Column(empty_values=())
+ parent = tables.ManyToManyColumn(verbose_name="Parents")
+
+ class Meta:
+ model = Structure
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ("name", "primary")
+ sequence = ("name",)
+
+ def render_synonym(self, value, record):
+ return format_html(record.get_synonym_link())
+
+
+class PresentationTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:presentation_detail", {"pk": tables.A("pk")}),
+ verbose_name="Presentation",
+ )
+
+ # edit = tables.LinkColumn(
+ # "atlas:presentation_update", text="Edit", args=[A("pk")], orderable=False
+ # )
+ # delete = tables.LinkColumn(
+ # "atlas:presentation_delete", text="Delete", args=[A("pk")], orderable=False
+ # )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ subspecialty = tables.ManyToManyColumn(verbose_name="Subspecialty")
+
+ class Meta:
+ model = Presentation
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ("name",)
+ sequence = ("name",)
+
+
+class PathologicalProcessTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:pathological_process_detail", {"pk": tables.A("pk")}),
+ verbose_name="PathologicalProcess",
+ )
+
+ # edit = tables.LinkColumn(
+ # "atlas:pathological_process_update", text="Edit", args=[A("pk")], orderable=False
+ # )
+ # delete = tables.LinkColumn(
+ # "atlas:pathological_process_delete", text="Delete", args=[A("pk")], orderable=False
+ # )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ class Meta:
+ model = PathologicalProcess
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ("name",)
+ sequence = ("name",)
+
+
+class SubspecialtyTable(tables.Table):
+ name = tables.Column(
+ linkify=("atlas:subspecialty_detail", {"pk": tables.A("pk")}),
+ verbose_name="Subspecialty",
+ )
+
+ # edit = tables.LinkColumn(
+ # "atlas:subspecialty_update", text="Edit", args=[A("pk")], orderable=False
+ # )
+ # delete = tables.LinkColumn(
+ # "atlas:subspecialty_delete", text="Delete", args=[A("pk")], orderable=False
+ # )
+ selection = tables.CheckBoxColumn(accessor="pk", orderable=False)
+
+ class Meta:
+ model = Subspecialty
+ template_name = "django_tables2/bootstrap4.html"
+ fields = ()
+ sequence = ("name",)
+
+ def render_synonym(self, value, record):
+ return format_html(record.get_synonym_link())
+ return f"{record.get_synonym_link()}"
diff --git a/atlas/templates/atlas/collection_case_view.html b/atlas/templates/atlas/collection_case_view.html
index 7b07f69e..b73e872f 100644
--- a/atlas/templates/atlas/collection_case_view.html
+++ b/atlas/templates/atlas/collection_case_view.html
@@ -11,9 +11,6 @@
{{series.get_block}}
-
- Popup
{% endfor %}
@@ -45,7 +42,9 @@ Return to collection
}
$(document).ready(function () {
+ setTimeout(() => {
window.loadDicomViewer(window.images[0])
+ }, 500);
})