kopia lustrzana https://github.com/wagtail/wagtail
Ensure search promotions formset does not get reset if the query form is invalid
rodzic
93382d3f21
commit
e9ffe38943
|
@ -599,26 +599,25 @@ class TestSearchPromotionsAddView(WagtailTestUtils, TestCase):
|
|||
# User should be given an error on the specific field in the form
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# This currently fails because of a bug in the formset handling
|
||||
# self.assertFormError(
|
||||
# response.context["form"], "query_string", "This field is required."
|
||||
# )
|
||||
# # The formset should still contain the submitted data
|
||||
# self.assertEqual(len(response.context["searchpicks_formset"].forms), 1)
|
||||
# self.assertEqual(
|
||||
# response.context["searchpicks_formset"].forms[0].cleaned_data["page"].id,
|
||||
# 1,
|
||||
# )
|
||||
# self.assertEqual(
|
||||
# response.context["searchpicks_formset"]
|
||||
# .forms[0]
|
||||
# .cleaned_data["description"],
|
||||
# "Hello",
|
||||
# )
|
||||
# # Should not raise an error anywhere else
|
||||
# self.assertFormSetError(response.context["searchpicks_formset"], 0, "page", [])
|
||||
# self.assertFormSetError(response.context["searchpicks_formset"], 0, None, [])
|
||||
# self.assertFormSetError(response.context["searchpicks_formset"], None, None, [])
|
||||
self.assertFormError(
|
||||
response.context["form"], "query_string", "This field is required."
|
||||
)
|
||||
# The formset should still contain the submitted data
|
||||
self.assertEqual(len(response.context["searchpicks_formset"].forms), 1)
|
||||
self.assertEqual(
|
||||
response.context["searchpicks_formset"].forms[0].cleaned_data["page"].id,
|
||||
1,
|
||||
)
|
||||
self.assertEqual(
|
||||
response.context["searchpicks_formset"]
|
||||
.forms[0]
|
||||
.cleaned_data["description"],
|
||||
"Hello",
|
||||
)
|
||||
# Should not raise an error anywhere else
|
||||
self.assertFormSetError(response.context["searchpicks_formset"], 0, "page", [])
|
||||
self.assertFormSetError(response.context["searchpicks_formset"], 0, None, [])
|
||||
self.assertFormSetError(response.context["searchpicks_formset"], None, None, [])
|
||||
|
||||
def test_post_with_invalid_page(self):
|
||||
# Submit
|
||||
|
|
|
@ -5,6 +5,7 @@ from django.http import Http404
|
|||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import gettext as _
|
||||
from django.utils.translation import gettext_lazy
|
||||
|
||||
|
@ -146,10 +147,6 @@ class CreateView(generic.CreateView):
|
|||
def form_valid(self, form):
|
||||
self.form = form
|
||||
self.object = Query.get(form.cleaned_data["query_string"])
|
||||
# Save search picks
|
||||
self.searchpicks_formset = forms.SearchPromotionsFormSet(
|
||||
self.request.POST, instance=self.object
|
||||
)
|
||||
|
||||
if save_searchpicks(self.object, self.object, self.searchpicks_formset):
|
||||
messages.success(
|
||||
|
@ -161,13 +158,13 @@ class CreateView(generic.CreateView):
|
|||
|
||||
return super().form_invalid(form)
|
||||
|
||||
def form_invalid(self, form):
|
||||
self.searchpicks_formset = forms.SearchPromotionsFormSet()
|
||||
return super().form_invalid(form)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.searchpicks_formset = forms.SearchPromotionsFormSet()
|
||||
return super().get(request, *args, **kwargs)
|
||||
@cached_property
|
||||
def searchpicks_formset(self):
|
||||
if self.request.method == "POST":
|
||||
return forms.SearchPromotionsFormSet(
|
||||
self.request.POST, instance=self.object
|
||||
)
|
||||
return forms.SearchPromotionsFormSet()
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
|
Ładowanie…
Reference in New Issue