From 69e4cfa3549193b2a879cfc0ca22e67fb5051cd8 Mon Sep 17 00:00:00 2001 From: Ross Date: Fri, 26 Feb 2021 15:50:49 +0000 Subject: [PATCH] . --- anatomy/static/js/anatomy.js | 63 +++++++++++++++++++++++++++++++ generic/urls.py | 2 + longs/serializers.py | 11 ++++++ longs/templates/longs/view.html | 4 ++ longs/views.py | 11 +++++- rapids/filters.py | 2 +- rapids/templates/rapids/view.html | 62 ------------------------------ 7 files changed, 91 insertions(+), 64 deletions(-) create mode 100644 longs/serializers.py diff --git a/anatomy/static/js/anatomy.js b/anatomy/static/js/anatomy.js index 6b8a2b44..ce843a01 100644 --- a/anatomy/static/js/anatomy.js +++ b/anatomy/static/js/anatomy.js @@ -71,6 +71,69 @@ $(document).ready(function () { $(document).keydown(keyDownHandler); $(document).keyup(keyUpHandler); + $("#button-select-add-exam").click(function (evt) { + // Find selected objects + + + + var jqxhr = $.get(evt.target.dataset.exam_list_url, function (data) { + console.log(data); + data.forEach((obj, n) => { + $("#exam-options").append($(document.createElement('button')).prop({ + type: 'button', + innerHTML: obj.name, + class: '', + + }).data("exam-id", obj.id).click((evt) => { addToExam(evt) })) + }) + }) + .done(function () { + //alert( "second success" ); + }) + .fail(function () { + //alert( "error" ); + }) + .always(function () { + //alert( "finished" ); + }); + + return; + + + function addToExam(evt) { + + ids = [] + $("table input:checked").each((n, el) => { + ids.push(el.value) + }) + post_url = document.getElementById("button-select-add-exam").dataset.exam_json_edit_url; + type = document.getElementById("button-select-add-exam").dataset.type; + $.ajax({ + url: post_url, + data: { + csrfmiddlewaretoken: "{{ csrf_token }}", + add_exam_questions: JSON.stringify(ids), + type: type, + exam_id: $(evt.target).data("exam-id"), + }, + type: "POST", + dataType: "json", + }) + // $.ajax().done(), $.ajax().fail(), $ajax().always() are upto you. Add/change accordingly + .done(function (data) { + console.log(data); + + if (data.status == "success") { + toastr.info('Questions added to exams.') + } + }) + .always(function () { + console.log('[Done]'); + $("#exam-options").empty(); + }) + } + }); + }); diff --git a/generic/urls.py b/generic/urls.py index 5e782177..0dd35dcc 100755 --- a/generic/urls.py +++ b/generic/urls.py @@ -2,11 +2,13 @@ from django.urls import path, include from . import views from rapids import views as rapid_views +from longs import views as long_views from rest_framework import routers router = routers.DefaultRouter() router.register(r'rapids/exams', rapid_views.ExamViewSet, basename="rapid-exams") +router.register(r'longs/exams', long_views.ExamViewSet, basename="long-exams") app_name = "generic" diff --git a/longs/serializers.py b/longs/serializers.py new file mode 100644 index 00000000..a447defc --- /dev/null +++ b/longs/serializers.py @@ -0,0 +1,11 @@ +# serializers.py +from rest_framework import serializers, permissions + + +from .models import Exam + +class ExamSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Exam + fields = ('name', 'id', 'active', "publish_results") + permission_classes = [permissions.IsAuthenticated] \ No newline at end of file diff --git a/longs/templates/longs/view.html b/longs/templates/longs/view.html index e41183a8..ee9a3bc4 100755 --- a/longs/templates/longs/view.html +++ b/longs/templates/longs/view.html @@ -16,4 +16,8 @@ {% render_table table %} + + +
{% endblock %} \ No newline at end of file diff --git a/longs/views.py b/longs/views.py index 91d60f91..b90bea0a 100755 --- a/longs/views.py +++ b/longs/views.py @@ -58,6 +58,11 @@ from longs.models import LongCreationDefault from generic.views import ExamViews + +from rest_framework import viewsets + +from .serializers import ExamSerializer + logger = logging.getLogger(__name__) @@ -947,4 +952,8 @@ def long_series_order_upload_filename(request, pk): return redirect("longs:long_series_detail", pk=pk) -LongExamViews = ExamViews(Exam, Long, "longs", "long", loadJsonAnswer) \ No newline at end of file +LongExamViews = ExamViews(Exam, Long, "longs", "long", loadJsonAnswer) + +class ExamViewSet(viewsets.ModelViewSet): + queryset = Exam.objects.all().order_by('name') + serializer_class = ExamSerializer \ No newline at end of file diff --git a/rapids/filters.py b/rapids/filters.py index e0d14f26..724a2260 100755 --- a/rapids/filters.py +++ b/rapids/filters.py @@ -6,7 +6,7 @@ from .models import Rapid class RapidFilter(django_filters.FilterSet): class Meta: model = Rapid - fields = ("normal", "abnormality", "region", "examination", + fields = ("normal", "abnormality", "exams", "region", "examination", "laterality", #"site", "created_date", "author") diff --git a/rapids/templates/rapids/view.html b/rapids/templates/rapids/view.html index e40d5a3e..0e59204a 100755 --- a/rapids/templates/rapids/view.html +++ b/rapids/templates/rapids/view.html @@ -21,68 +21,6 @@