fix formsets?
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user