This commit is contained in:
Ross
2021-11-30 18:28:39 +00:00
parent 00ff19044b
commit 0de128f227
3 changed files with 107 additions and 73 deletions
+1 -1
View File
@@ -161,7 +161,7 @@ class CaseForm(ModelForm):
"description", "description",
"history", "history",
"condition", "condition",
"differential", #"differential",
# "sign", # "sign",
"open_access", "open_access",
] ]
+30 -5
View File
@@ -27,14 +27,21 @@
} }
function add_input_form() { function add_series_input_form() {
var form_idx = $('#id_Case_series-TOTAL_FORMS').val(); var form_idx = $('#id_Case_series-TOTAL_FORMS').val();
$('#form_set').append($('#empty_form').html().replace(/__prefix__/g, form_idx)); $('#series_formset').append($('#empty_form').html().replace(/__prefix__/g, form_idx));
$('#id_Case_series-TOTAL_FORMS').val(parseInt(form_idx) + 1); $('#id_Case_series-TOTAL_FORMS').val(parseInt(form_idx) + 1);
} }
function add_differential_input_form() {
var form_idx = $('#id_Case_casedifferential-TOTAL_FORMS').val();
$('#case_differential_formset').append($('#empty_form').html().replace(/__prefix__/g, form_idx));
$('#id_Case_casedifferential-TOTAL_FORMS').val(parseInt(form_idx) + 1);
}
$(document).ready(function () { $(document).ready(function () {
$('#add_more').click(() => { add_input_form() }); $('#add_more_series').click(() => { add_series_input_form() });
$('#add_more_differential').click(() => { add_differential_input_form() });
}) })
</script> </script>
@@ -52,8 +59,8 @@ Use this form to create a atlas case. Existing associated image sets can be adde
</table> </table>
<h3>Series:</h3> <h3>Series:</h3>
Add image sets here. These can only be added once created (they can also be added to cases on creation). Add image sets here. These can only be added once created (they can also be added to cases on creation).
<input type="button" value="Add More Series" id="add_more"> <input type="button" value="Add More Series" id="add_more_series">
<div id="form_set"> <div id="series_formset">
{% for form in series_formset %} {% for form in series_formset %}
<ul class="no-error series-formset"> <ul class="no-error series-formset">
{{form.non_field_errors}} {{form.non_field_errors}}
@@ -63,6 +70,19 @@ Use this form to create a atlas case. Existing associated image sets can be adde
{% endfor %} {% endfor %}
</div> </div>
{{ series_formset.management_form }} {{ series_formset.management_form }}
<h3>Differenetial:</h3>
Add differential here.
<input type="button" value="Add More Series" id="add_more_differential">
<div id="case_differential_formset">
{% for form in case_differential_formset %}
<ul class="no-error case_differential_formset">
{{form.non_field_errors}}
{{form.errors}}
{{ form.as_ul }}
</ul>
{% endfor %}
</div>
{{ case_differential_formset.management_form }}
<input type="submit" class="submit-button" value="Submit" name="submit"> <input type="submit" class="submit-button" value="Submit" name="submit">
</form> </form>
<div id="empty_form" style="display:none"> <div id="empty_form" style="display:none">
@@ -70,4 +90,9 @@ Use this form to create a atlas case. Existing associated image sets can be adde
{{ series_formset.empty_form.as_ul }} {{ series_formset.empty_form.as_ul }}
</ul> </ul>
</div> </div>
<div id="empty_form" style="display:none">
<ul class='no_error case_differential_formset'>
{{ case_differential_formset.empty_form.as_ul }}
</ul>
</div>
{% endblock %} {% endblock %}
+74 -65
View File
@@ -173,37 +173,37 @@ class SeriesDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
success_url = reverse_lazy("atlas:series_view") success_url = reverse_lazy("atlas:series_view")
@login_required # @login_required
@user_is_author_or_atlas_checker # @user_is_author_or_atlas_checker
def case_clone(request, pk): # def case_clone(request, pk):
new_item = get_object_or_404(Case, pk=pk) # new_item = get_object_or_404(Case, pk=pk)
new_item.pk = None # autogen a new pk (item_id) # new_item.pk = None # autogen a new pk (item_id)
# new_item.name = "Copy of " + new_item.name #need to change uniques # # new_item.name = "Copy of " + new_item.name #need to change uniques
#
form = CaseForm(request.POST or None, instance=new_item) # form = CaseForm(request.POST or None, instance=new_item)
#
series_formset = SeriesFormSet() # series_formset = SeriesFormSet()
#
if form.is_valid(): # if form.is_valid():
form.instance.author.add(request.user.id) # form.instance.author.add(request.user.id)
#
# logger.debug(formset.is_valid()) # # logger.debug(formset.is_valid())
if series_formset.is_valid(): # if series_formset.is_valid():
response = super().form_valid(form) # response = super().form_valid(form)
series_formset.instance = obj # series_formset.instance = obj
series_formset.save() # series_formset.save()
#
return response # return response
else: # else:
return super().form_invalid(form) # return super().form_invalid(form)
#
context = { # context = {
"form": form, # "form": form,
"series_formset": series_formset, # "series_formset": series_formset,
# other context # # other context
} # }
#
return render(request, "atlas/case_form.html", context) # return render(request, "atlas/case_form.html", context)
class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView): class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
@@ -306,9 +306,14 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
context["series_formset"] = SeriesFormSet( context["series_formset"] = SeriesFormSet(
self.request.POST, self.request.FILES self.request.POST, self.request.FILES
) )
context["casedifferential_formset"] = SeriesFormSet(
self.request.POST, self.request.FILES
)
context["series_formset"].full_clean() context["series_formset"].full_clean()
context["casedifferential_formset"].full_clean()
else: else:
context["series_formset"] = SeriesFormSet() context["series_formset"] = SeriesFormSet()
context["casedifferential_formset"] = SeriesFormSet()
return context return context
def form_valid(self, form): def form_valid(self, form):
@@ -323,10 +328,13 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
context = self.get_context_data(form=form) context = self.get_context_data(form=form)
series_formset = context["series_formset"] series_formset = context["series_formset"]
if series_formset.is_valid(): casedifferential_formset = context["casedifferential_formset"]
if series_formset.is_valid() and casedifferential_formset.is_valid():
response = super().form_valid(form) response = super().form_valid(form)
series_formset.instance = self.object series_formset.instance = self.object
series_formset.save() series_formset.save()
casedifferential_formset.instance = self.object
casedifferential_formset.save()
# If the normal submit button is pressed we save as normal # If the normal submit button is pressed we save as normal
if "submit" in self.request.POST: if "submit" in self.request.POST:
return response return response
@@ -361,40 +369,41 @@ class AtlasUpdate(
# #initial = {'date_of_death': '05/01/2018'} # #initial = {'date_of_death': '05/01/2018'}
# exclude = [ 'created_date', 'published_date' ] # exclude = [ 'created_date', 'published_date' ]
def get_form_kwargs(self):
kwargs = super(AtlasUpdate, self).get_form_kwargs()
kwargs.update({"user": self.request.user})
return kwargs
def get_context_data(self, **kwargs): # def get_form_kwargs(self):
context = super(AtlasUpdate, self).get_context_data(**kwargs) # kwargs = super(AtlasUpdate, self).get_form_kwargs()
if self.request.POST: # kwargs.update({"user": self.request.user})
context["series_formset"] = SeriesFormSet( # return kwargs
self.request.POST, self.request.FILES, instance=self.object #
) # def get_context_data(self, **kwargs):
context["series_formset"].full_clean() # context = super(AtlasUpdate, self).get_context_data(**kwargs)
else: # if self.request.POST:
context["series_formset"] = SeriesFormSet(instance=self.object) # context["series_formset"] = SeriesFormSet(
return context # self.request.POST, self.request.FILES, instance=self.object
# )
def form_valid(self, form): # context["series_formset"].full_clean()
# else:
self.object = form.save(commit=False) # context["series_formset"] = SeriesFormSet(instance=self.object)
self.object.save() # return context
#
form.instance.author.add(self.request.user.id) # def form_valid(self, form):
#
context = self.get_context_data(form=form) # self.object = form.save(commit=False)
series_formset = context["series_formset"] # self.object.save()
# logger.debug(formset.is_valid()) #
if series_formset.is_valid(): # form.instance.author.add(self.request.user.id)
response = super().form_valid(form) #
series_formset.instance = self.object # context = self.get_context_data(form=form)
series_formset.save() # series_formset = context["series_formset"]
# # logger.debug(formset.is_valid())
return response # if series_formset.is_valid():
else: # response = super().form_valid(form)
return super().form_invalid(form) # series_formset.instance = self.object
# series_formset.save()
#
# return response
# else:
# return super().form_invalid(form)
class AtlasClone(AtlasCreateBase): class AtlasClone(AtlasCreateBase):