fix formsets?

This commit is contained in:
Ross
2021-01-18 16:18:07 +00:00
parent d3b42ad207
commit ee761afe83
3 changed files with 89 additions and 18 deletions
+40 -1
View File
@@ -396,4 +396,43 @@ td.user-answer-score-2::after {
.answer-0 {
color: red;
}
}
.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;
}
+23 -4
View File
@@ -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 @@
<table>
{{ form.as_table }}
</table>
<h3>Answers:</h3>
<input type="button" value="Add More Answers" id="add_more">
<div id="answer_form_set">
{% for form in answer_formset %}
<ul class="no-error answer-formset">
{{form.non_field_errors}}
{{form.errors}}
{{ form.as_ul }}
</ul>
{% endfor %}
</div>
{{ answer_formset.management_form }}
<h3>Images:</h3>
<input type="button" value="Add More Images" id="add_more">
<div id="drop-container" class="drop-target">Drop images here (or use the buttons below)<div
id="feedback-drop-target">Feedback image?<br />drop those here</div>
<div id="drop-filenames"></div>
</div>
<div id="form_set">
<div id="image_form_set">
{% for form in image_formset %}
<ul class="no-error image-formset">
{{form.non_field_errors}}
+26 -13
View File
@@ -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)