.
This commit is contained in:
+1
-1
@@ -598,7 +598,7 @@ class CaseCollection(models.Model):
|
|||||||
cases = models.ManyToManyField(Case, through="CaseDetail")
|
cases = models.ManyToManyField(Case, through="CaseDetail")
|
||||||
|
|
||||||
publish_results = models.BooleanField(
|
publish_results = models.BooleanField(
|
||||||
help_text="If a collection should published", default=True
|
help_text="If a collection should published", default=False
|
||||||
)
|
)
|
||||||
|
|
||||||
active = models.BooleanField(
|
active = models.BooleanField(
|
||||||
|
|||||||
@@ -59,33 +59,6 @@
|
|||||||
</details>
|
</details>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if take %}
|
|
||||||
<form method="POST" class="post-form">{% csrf_token %}
|
|
||||||
<div class="form-contents">
|
|
||||||
{% if collection.publish_results %}<fieldset disabled="disabled">{% endif %}
|
|
||||||
{{form}}
|
|
||||||
{% if collection.publish_results %}</fieldset>{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if previous > -1 %}
|
|
||||||
<button type="submit" name="previous" class="save btn btn-default">Previous</button>
|
|
||||||
{% endif %}
|
|
||||||
{% if next %}
|
|
||||||
<button type="submit" name="next" class="save btn btn-default">Next</button>
|
|
||||||
{% else %}
|
|
||||||
{% if not exam.publish_results %}
|
|
||||||
<button type="submit" name="save" class="save btn btn-default">Save</button>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if collection.publish_results %}
|
|
||||||
Answer score: {{answer.score}}<br />
|
|
||||||
Answer feedback: {{answer.feedback|safe}}
|
|
||||||
{% endif %}
|
|
||||||
<br />
|
|
||||||
<button type="submit" name="finish" class="save btn btn-default">Overview</button>
|
|
||||||
<button type="submit" id="goto-button" value="test" name="goto" class="hide">goto</button>
|
|
||||||
</form>
|
|
||||||
{% else %}
|
|
||||||
<div>
|
<div>
|
||||||
{% if previous %}
|
{% if previous %}
|
||||||
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:-1 %}">Previous</a>
|
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:-1 %}">Previous</a>
|
||||||
@@ -97,7 +70,6 @@
|
|||||||
<br />
|
<br />
|
||||||
Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
|
|||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{% extends 'atlas/base.html' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>Case {{case_number|add:1}}
|
||||||
|
|
||||||
|
{% if collection.show_title %}
|
||||||
|
: {{case.title}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
{% if collection.show_description and case.description%}
|
||||||
|
<div>
|
||||||
|
Description: {{case.description}}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if collection.show_history and case.history%}
|
||||||
|
<div>
|
||||||
|
History: {{case.history}}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="pre-whitespace multi-image-block">
|
||||||
|
{% for series in series_list %}
|
||||||
|
<span class="series-block">
|
||||||
|
<span>
|
||||||
|
Series {{ forloop.counter }}:
|
||||||
|
<a href="#" onclick='window.loadDicomViewer(window.images[{{forloop.counter0}}])'>
|
||||||
|
{{series.get_block}}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div id="single-dicom-viewer" class="dicom-viewer" data-images="" data-annotations=''>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{% if collection.show_discussion and case.discussion%}
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
Discussion:
|
||||||
|
</summary>
|
||||||
|
<div>
|
||||||
|
{{case.discussion}}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{% endif %}
|
||||||
|
{% if collection.show_report and case.report%}
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
Report:
|
||||||
|
</summary>
|
||||||
|
<div>
|
||||||
|
{{case.report}}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<form method="POST" class="post-form">{% csrf_token %}
|
||||||
|
<div class="form-contents">
|
||||||
|
{% if collection.publish_results %}<fieldset disabled="disabled">{% endif %}
|
||||||
|
{{form}}
|
||||||
|
{% if collection.publish_results %}</fieldset>{% endif %}
|
||||||
|
</div>
|
||||||
|
{% if previous > -1 %}
|
||||||
|
<button type="submit" name="previous" class="save btn btn-default">Previous</button>
|
||||||
|
{% endif %}
|
||||||
|
{% if next %}
|
||||||
|
<button type="submit" name="next" class="save btn btn-default">Next</button>
|
||||||
|
{% else %}
|
||||||
|
{% if not exam.publish_results %}
|
||||||
|
<button type="submit" name="save" class="save btn btn-default">Save</button>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if collection.publish_results %}
|
||||||
|
Answer score: {{answer.score}}<br />
|
||||||
|
Answer feedback: {{answer.feedback|safe}}
|
||||||
|
{% endif %}
|
||||||
|
<br />
|
||||||
|
<button type="submit" name="finish" class="save btn btn-default">Overview</button>
|
||||||
|
<button type="submit" id="goto-button" value="test" name="goto" class="hide">goto</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
{% block js %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
window.images = {
|
||||||
|
{% for series in series_list %}
|
||||||
|
{{ forloop.counter0 }}: ["{{ series.get_image_url_array_not_json }}"],
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
setTimeout(() => {
|
||||||
|
window.loadDicomViewer(window.images[0])
|
||||||
|
}, 500);
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock js %}
|
||||||
+36
-10
@@ -1275,13 +1275,6 @@ def collection_take_overview(request, pk, cid, passcode):
|
|||||||
|
|
||||||
|
|
||||||
def collection_case_view_take(request, pk, case_number, cid, passcode):
|
def collection_case_view_take(request, pk, case_number, cid, passcode):
|
||||||
return collection_case_view_base(request, pk, case_number, True, cid, passcode)
|
|
||||||
|
|
||||||
@user_is_collection_author_or_atlas_editor
|
|
||||||
def collection_case_view(request, pk, case_number, take=False, cid=None, passcode=None):
|
|
||||||
return collection_case_view_base(request, pk, case_number, take=False, cid=None, passcode=None)
|
|
||||||
|
|
||||||
def collection_case_view_base(request, pk, case_number, take=False, cid=None, passcode=None):
|
|
||||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||||
|
|
||||||
form = None
|
form = None
|
||||||
@@ -1291,13 +1284,12 @@ def collection_case_view_base(request, pk, case_number, take=False, cid=None, pa
|
|||||||
if not collection.active:
|
if not collection.active:
|
||||||
raise Http404("Exam not found")
|
raise Http404("Exam not found")
|
||||||
|
|
||||||
if take and not collection.check_cid_user(cid, passcode, request):
|
if not collection.check_cid_user(cid, passcode, request):
|
||||||
raise Http404("Error accessing exam")
|
raise Http404("Error accessing exam")
|
||||||
|
|
||||||
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
||||||
case = cases[case_number]
|
case = cases[case_number]
|
||||||
|
|
||||||
if take:
|
|
||||||
c = CidUser.objects.filter(cid=cid).first()
|
c = CidUser.objects.filter(cid=cid).first()
|
||||||
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
|
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
|
||||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||||
@@ -1360,9 +1352,43 @@ def collection_case_view_base(request, pk, case_number, take=False, cid=None, pa
|
|||||||
"case_number": case_number,
|
"case_number": case_number,
|
||||||
"previous": previous,
|
"previous": previous,
|
||||||
"next": next,
|
"next": next,
|
||||||
"take": take,
|
|
||||||
"cid": cid,
|
"cid": cid,
|
||||||
"passcode": passcode,
|
"passcode": passcode,
|
||||||
"answer": answer,
|
"answer": answer,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@user_is_collection_author_or_atlas_editor
|
||||||
|
def collection_case_view(request, pk, case_number):
|
||||||
|
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||||
|
|
||||||
|
form = None
|
||||||
|
answer = None
|
||||||
|
|
||||||
|
if collection.collection_type != collection.COLLECTION_TYPE_CHOICES.REVIEW:
|
||||||
|
if not collection.active:
|
||||||
|
raise Http404("Exam not found")
|
||||||
|
|
||||||
|
|
||||||
|
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
||||||
|
case = cases[case_number]
|
||||||
|
|
||||||
|
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||||
|
|
||||||
|
previous = case_number > 0
|
||||||
|
next = case_number < (len(cases) - 1)
|
||||||
|
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"atlas/collection_case_view.html",
|
||||||
|
{
|
||||||
|
"form": form,
|
||||||
|
"collection": collection,
|
||||||
|
"case": case,
|
||||||
|
"series_list": series_list,
|
||||||
|
"case_number": case_number,
|
||||||
|
"previous": previous,
|
||||||
|
"next": next,
|
||||||
|
"answer": answer,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user