From ee761afe83ba74630d7b058e4fcb1fcb97dcb302 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 18 Jan 2021 16:18:07 +0000 Subject: [PATCH] fix formsets? --- anatomy/static/css/anatomy.css | 41 ++++++++++++++++++++++++- rapids/templates/rapids/rapid_form.html | 27 +++++++++++++--- rapids/views.py | 39 +++++++++++++++-------- 3 files changed, 89 insertions(+), 18 deletions(-) diff --git a/anatomy/static/css/anatomy.css b/anatomy/static/css/anatomy.css index 012635b2..3edeb1d6 100644 --- a/anatomy/static/css/anatomy.css +++ b/anatomy/static/css/anatomy.css @@ -396,4 +396,43 @@ td.user-answer-score-2::after { .answer-0 { color: red; -} \ No newline at end of file +} + +.selector { + border-color: #05668d; +} + +.selector input { + color: gray; + background-color: white; + font-size: small; +} + +.selector .selector-available h2, .selector .selector-chosen h2 { + margin-bottom: 0px; + border: none; + /* border-color: #05668d; */ + background-color: #ebf2fa; + color: rgb(28, 184, 65); + +} + +.selector .selector-available select, .selector .selector-chosen select { + border-color: #05668d; +} + +#id_laterality { + margin-top: 30px; +} +#id_laterality li{ + display: inline-block; + border-radius: 4px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + background: rgb(28, 184, 65); + padding-right: 10px; +} + +.add-popup { + display: block; +} + diff --git a/rapids/templates/rapids/rapid_form.html b/rapids/templates/rapids/rapid_form.html index 9078de4d..5c02a4e4 100755 --- a/rapids/templates/rapids/rapid_form.html +++ b/rapids/templates/rapids/rapid_form.html @@ -27,10 +27,16 @@ function add_input_form() { var form_idx = $('#id_images-TOTAL_FORMS').val(); - $('#form_set').append($('#empty_form').html().replace(/__prefix__/g, form_idx)); + $('#image_form_set').append($('#empty_form').html().replace(/__prefix__/g, form_idx)); $('#id_images-TOTAL_FORMS').val(parseInt(form_idx) + 1); } + function add_answers_input_form() { + var form_idx = $('#id_answers-TOTAL_FORMS').val(); + $('#answer_form_set').append($('#empty_form').html().replace(/__prefix__/g, form_idx)); + $('#id_answers-TOTAL_FORMS').val(parseInt(form_idx) + 1); + } + $(document).ready(function () { $("#add_abnormality").appendTo($("label[for='id_abnormality']")); @@ -118,11 +124,12 @@ }; - $('#add_more').click(() => { add_input_form() }); + $('#add_more_images').click(() => { add_input_form() }); + $('#add_more_answers').click(() => { add_answers_input_form() }); function updateFileList() { $("#drop-filenames").empty() - $("#form_set input[type=file]").each((n, el) => { + $("#image_form_set input[type=file]").each((n, el) => { console.log(el); if(el.files.length > 0) { extra_class = " image-ident-loading"; @@ -224,13 +231,25 @@ {{ form.as_table }}
+

Answers:

+ +
+ {% for form in answer_formset %} + + {% endfor %} +
+ {{ answer_formset.management_form }}

Images:

Drop images here (or use the buttons below)
Feedback image?
drop those here
-
+
{% for form in image_formset %}
    {{form.non_field_errors}} diff --git a/rapids/views.py b/rapids/views.py index c4d94676..d1097d5d 100755 --- a/rapids/views.py +++ b/rapids/views.py @@ -16,7 +16,7 @@ from django.urls import reverse_lazy, reverse from django.http import Http404, JsonResponse from django.http import HttpResponseRedirect, HttpResponse -from .forms import RapidForm, ImageFormSet, NoteForm, RegionForm, AbnormalityForm, ExaminationForm +from .forms import RapidForm, ImageFormSet, NoteForm, RegionForm, AbnormalityForm, ExaminationForm, AnswerFormSet, AnswerUpdateFormSet from .models import Rapid, Note, Abnormality, Region, Examination from .tables import RapidTable from .filters import RapidFilter @@ -201,23 +201,28 @@ def rapid_clone(request, pk): form = RapidForm(request.POST or None, instance=new_item) - formset = ImageFormSet() + image_formset = ImageFormSet() + answer_formset = AnswerFormSet() if form.is_valid(): form.instance.author.add(request.user.id) #logger.debug(formset.is_valid()) - if formset.is_valid(): + if image_formset.is_valid() and answer_formset.is_valid(): response = super().form_valid(form) - formset.instance = obj - formset.save() + image_formset.instance = obj + image_formset.save() + + answer_formset.instance = obj + answer_formset.save() return response else: return super().form_invalid(form) context = { "form": form, - "image_formset": formset + "image_formset": image_formset + "answer_formset": answer_formset #other context } @@ -245,11 +250,14 @@ class RapidCreateBase(LoginRequiredMixin, CreateView): form.instance.author.add(self.request.user.id) context = self.get_context_data(form=form) - formset = context['image_formset'] - if formset.is_valid(): + image_formset = context['image_formset'] + answer_formset = context['answer_formset'] + if image_formset.is_valid() and answer_formset.is_valid(): response = super().form_valid(form) - formset.instance = self.object - formset.save() + image_formset.instance = self.object + image_formset.save() + answer_formset.instance = self.object + answer_formset.save() # If the normal submit button is pressed we save as normal if "submit" in self.request.POST: return response @@ -303,8 +311,10 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, self.request.FILES, instance=self.object) context['image_formset'].full_clean() + context['answer_formset'] = AnswerFormSet(instance=self.object) else: context['image_formset'] = ImageFormSet(instance=self.object) + context['answer_formset'] = AnswerFormSet(instance=self.object) return context def form_valid(self, form): @@ -315,12 +325,15 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, form.instance.author.add(self.request.user.id) context = self.get_context_data(form=form) - formset = context['image_formset'] + image_formset = context['image_formset'] + answer_formset = context['image_formset'] #logger.debug(formset.is_valid()) if formset.is_valid(): response = super().form_valid(form) - formset.instance = self.object - formset.save() + image_formset.instance = self.object + image_formset.save() + answer_formset.instance = self.object + answer_formset.save() return response else: return super().form_invalid(form)