.
This commit is contained in:
+9
-5
@@ -119,7 +119,7 @@ class Long(models.Model):
|
||||
)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("longs:long_detail", kwargs={"pk": self.pk})
|
||||
return reverse("longs:question_detail", kwargs={"pk": self.pk})
|
||||
|
||||
def get_authors(self):
|
||||
"""Returns a comma seperated text list of authors"""
|
||||
@@ -324,7 +324,7 @@ class LongSeries(models.Model):
|
||||
|
||||
|
||||
|
||||
def order_by_dicom_location(self):
|
||||
def order_by_dicom(self, field="SliceLocation"):
|
||||
images = self.images.all()
|
||||
|
||||
files = []
|
||||
@@ -339,7 +339,7 @@ class LongSeries(models.Model):
|
||||
map = {}
|
||||
skipcount = 0
|
||||
for i, f in files:
|
||||
if hasattr(f, 'SliceLocation'):
|
||||
if hasattr(f, field):
|
||||
slices.append(f)
|
||||
map[f.SliceLocation] = i
|
||||
else:
|
||||
@@ -348,7 +348,11 @@ class LongSeries(models.Model):
|
||||
print("skipped, no SliceLocation: {}".format(skipcount))
|
||||
|
||||
# ensure they are in the correct order
|
||||
slices = sorted(slices, key=lambda s: s.SliceLocation)
|
||||
if field == "SliceLocation":
|
||||
slices = sorted(slices, key=lambda s: s.SliceLocation)
|
||||
elif field == "InstanceNumber":
|
||||
slices = sorted(slices, key=lambda s: s.InstanceNumber)
|
||||
|
||||
|
||||
#print(slices)
|
||||
n = 1
|
||||
@@ -390,7 +394,7 @@ class Note(models.Model):
|
||||
|
||||
def get_absolute_url(self):
|
||||
self.pk = self.long_id
|
||||
return reverse("longs:long_detail", kwargs={"pk": self.pk})
|
||||
return reverse("longs:question_detail", kwargs={"pk": self.pk})
|
||||
|
||||
def __str__(self):
|
||||
return "{} [{}] {}".format(self.long, self.author, self.created_on)
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ class LongTable(tables.Table):
|
||||
"longs:long_update", text="Edit", args=[A("pk")], orderable=False
|
||||
)
|
||||
view = tables.LinkColumn(
|
||||
"longs:long_detail", text="View", args=[A("pk")], orderable=False
|
||||
"longs:question_detail", text="View", args=[A("pk")], orderable=False
|
||||
)
|
||||
clone = tables.LinkColumn(
|
||||
"longs:long_clone", text="Clone", args=[A("pk")], orderable=False
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{{category}}:
|
||||
<ul>
|
||||
{% for long in longs %}
|
||||
<li><a href="{% url 'longs:long_detail' pk=long.pk %}">{{long}}
|
||||
<li><a href="{% url 'longs:question_detail' pk=long.pk %}">{{long}}
|
||||
[{{long.get_authors}}]</a></li>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
@@ -5,7 +5,7 @@ My Questions:
|
||||
<ul>
|
||||
{% for long in user_longs %}
|
||||
<li{% if long.scrapped %} class='long-scrapped' {% endif %}><a
|
||||
href="{% url 'longs:long_detail' pk=long.pk %}">{{long}}
|
||||
href="{% url 'longs:question_detail' pk=long.pk %}">{{long}}
|
||||
[{{long.get_authors}}]</a></li>
|
||||
|
||||
{% endfor %}
|
||||
@@ -15,7 +15,7 @@ Other Questions:
|
||||
<ul>
|
||||
{% for long in other_longs %}
|
||||
<li{% if long.scrapped %} class='long-scrapped' {% endif %}><a
|
||||
href="{% url 'longs:long_detail' pk=long.pk %}">{{long}} [{{long.get_authors}}]</a></li>
|
||||
href="{% url 'longs:question_detail' pk=long.pk %}">{{long}} [{{long.get_authors}}]</a></li>
|
||||
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
@@ -52,3 +52,5 @@
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<a href="{% url 'longs:question_json' pk=exam.pk %}">JSON</a>
|
||||
<a href="{% url 'longs:question_json_recreate' pk=exam.pk %}">Refresh JSON cache</a>
|
||||
@@ -4,7 +4,7 @@
|
||||
{% if series.long %}
|
||||
Associated case:
|
||||
{% for long in series.long.all %}
|
||||
<a href="{% url 'longs:long_detail' pk=long.pk %}">{{long}}</a>
|
||||
<a href="{% url 'longs:question_detail' pk=long.pk %}">{{long}}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
This series is not associated with any cases.
|
||||
@@ -15,7 +15,8 @@ This series is not associated with any cases.
|
||||
<div>Author: {{ series.get_author_display }}</div>
|
||||
|
||||
<a href="{% url 'longs:long_series_order_dicom' pk=series.pk %}" title="orders dicom by slice location">Order dicoms by slice location</a>
|
||||
<a href="{% url 'longs:long_series_order_upload_filename' pk=series.pk %}" title="orders dicom by slice location">Order by uploaded filename</a>
|
||||
<a href="{% url 'longs:long_series_order_dicom_instance' pk=series.pk %}" title="orders dicom by instance number">Order dicoms by instance number</a>
|
||||
<a href="{% url 'longs:long_series_order_upload_filename' pk=series.pk %}" title="orders dicom by uploaded filename">Order by uploaded filename</a>
|
||||
{% for image in series.images.all %}
|
||||
{{image.image.url}}, pos: {{image.position}}, {{image.upload_filename}}</br>
|
||||
|
||||
|
||||
+4
-1
@@ -12,11 +12,14 @@ urlpatterns = [
|
||||
path("series/", views.LongSeriesView.as_view(), name="long_series_view"),
|
||||
path("series/<int:pk>", views.long_series_detail, name="long_series_detail"),
|
||||
path("series/<int:pk>/order_dicom", views.long_series_order_dicom, name="long_series_order_dicom"),
|
||||
path("series/<int:pk>/order_dicom_instance", views.long_series_order_dicom_instance, name="long_series_order_dicom_instance"),
|
||||
path("series/<int:pk>/order_upload_filename", views.long_series_order_upload_filename, name="long_series_order_upload_filename"),
|
||||
path("series/<int:pk>/delete", views.LongSeriesDelete.as_view(), name="long_series_delete"),
|
||||
# path("unchecked/", views.unchecked_list, name="unchecked_list"),
|
||||
# path("verified/<int:pk>/", views.verified_detail, name="verified_detail"),
|
||||
path("question/<int:pk>/", views.long_detail, name="long_detail"),
|
||||
path("question/<int:pk>/", views.question_detail, name="question_detail"),
|
||||
path("question/<int:pk>/json", views.question_json, name="question_json"),
|
||||
path("question/<int:pk>/json/recreate", views.question_json_recreate, name="question_json_recreate"),
|
||||
path("question/<int:pk>/split", views.long_split, name="long_split"),
|
||||
path("question/<int:pk>/clone", views.LongClone.as_view(), name="long_clone"),
|
||||
# path("verified/", views.verified, name="verified"),
|
||||
|
||||
+12
-2
@@ -87,7 +87,7 @@ class AuthorOrCheckerRequiredMixin(object):
|
||||
|
||||
|
||||
@login_required
|
||||
def long_detail(request, pk):
|
||||
def question_detail(request, pk):
|
||||
long = get_object_or_404(Long, pk=pk)
|
||||
|
||||
# if request.user not in long.author.all():
|
||||
@@ -939,12 +939,22 @@ def exam_scores_cid_user(request, pk, sk):
|
||||
def long_series_order_dicom(request, pk):
|
||||
series = get_object_or_404(LongSeries, pk=pk)
|
||||
try:
|
||||
series.order_by_dicom_location()
|
||||
series.order_by_dicom()
|
||||
except:
|
||||
return HttpResponse('<h1>Series does not appear to contain dicoms</h1>')
|
||||
|
||||
return redirect("longs:long_series_detail", pk=pk)
|
||||
|
||||
@login_required
|
||||
def long_series_order_dicom_instance(request, pk):
|
||||
series = get_object_or_404(LongSeries, pk=pk)
|
||||
try:
|
||||
series.order_by_dicom("InstanceNumber")
|
||||
except:
|
||||
return HttpResponse('<h1>Series does not appear to contain dicoms (or field InstanceNumber)</h1>')
|
||||
|
||||
return redirect("longs:long_series_detail", pk=pk)
|
||||
|
||||
@login_required
|
||||
def long_series_order_upload_filename(request, pk):
|
||||
series = get_object_or_404(LongSeries, pk=pk)
|
||||
|
||||
Reference in New Issue
Block a user