This commit is contained in:
Ross
2022-04-08 23:14:32 +01:00
parent 7183cbbc09
commit 11f3836e53
4 changed files with 192 additions and 90 deletions
+1 -1
View File
@@ -598,7 +598,7 @@ class CaseCollection(models.Model):
cases = models.ManyToManyField(Case, through="CaseDetail")
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(
@@ -59,33 +59,6 @@
</details>
{% 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>
{% if previous %}
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:-1 %}">Previous</a>
@@ -97,7 +70,6 @@
<br />
Return to <a href='{{collection.get_absolute_url}}'>collection</a>
{% endif %}
{% endblock %}
{% 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
View File
@@ -1275,13 +1275,6 @@ def collection_take_overview(request, pk, 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)
form = None
@@ -1291,13 +1284,12 @@ def collection_case_view_base(request, pk, case_number, take=False, cid=None, pa
if not collection.active:
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")
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
case = cases[case_number]
if take:
c = CidUser.objects.filter(cid=cid).first()
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
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,
"previous": previous,
"next": next,
"take": take,
"cid": cid,
"passcode": passcode,
"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,
},
)