.
This commit is contained in:
+1
-1
@@ -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
@@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user