|
@@ -23,7 +23,11 @@ from django.forms.formsets import (
|
|
|
all_valid,
|
|
|
formset_factory,
|
|
|
)
|
|
|
-from django.forms.renderers import TemplatesSetting
|
|
|
+from django.forms.renderers import (
|
|
|
+ DjangoTemplates,
|
|
|
+ TemplatesSetting,
|
|
|
+ get_default_renderer,
|
|
|
+)
|
|
|
from django.forms.utils import ErrorList
|
|
|
from django.forms.widgets import HiddenInput
|
|
|
from django.test import SimpleTestCase
|
|
@@ -1553,6 +1557,60 @@ class FormsFormsetTestCase(SimpleTestCase):
|
|
|
self.assertEqual(formset.non_form_errors().renderer, renderer)
|
|
|
self.assertEqual(formset.empty_form.renderer, renderer)
|
|
|
|
|
|
+ def test_form_default_renderer(self):
|
|
|
+ """
|
|
|
+ In the absence of a renderer passed to the formset_factory(),
|
|
|
+ Form.default_renderer is respected.
|
|
|
+ """
|
|
|
+
|
|
|
+ class CustomRenderer(DjangoTemplates):
|
|
|
+ pass
|
|
|
+
|
|
|
+ class ChoiceWithDefaultRenderer(Choice):
|
|
|
+ default_renderer = CustomRenderer()
|
|
|
+
|
|
|
+ data = {
|
|
|
+ "choices-TOTAL_FORMS": "1",
|
|
|
+ "choices-INITIAL_FORMS": "0",
|
|
|
+ "choices-MIN_NUM_FORMS": "0",
|
|
|
+ }
|
|
|
+
|
|
|
+ ChoiceFormSet = formset_factory(ChoiceWithDefaultRenderer)
|
|
|
+ formset = ChoiceFormSet(data, prefix="choices")
|
|
|
+ self.assertEqual(
|
|
|
+ formset.forms[0].renderer, ChoiceWithDefaultRenderer.default_renderer
|
|
|
+ )
|
|
|
+ self.assertEqual(
|
|
|
+ formset.empty_form.renderer, ChoiceWithDefaultRenderer.default_renderer
|
|
|
+ )
|
|
|
+ default_renderer = get_default_renderer()
|
|
|
+ self.assertIsInstance(formset.renderer, type(default_renderer))
|
|
|
+
|
|
|
+ def test_form_default_renderer_class(self):
|
|
|
+ """
|
|
|
+ In the absence of a renderer passed to the formset_factory(),
|
|
|
+ Form.default_renderer is respected.
|
|
|
+ """
|
|
|
+
|
|
|
+ class CustomRenderer(DjangoTemplates):
|
|
|
+ pass
|
|
|
+
|
|
|
+ class ChoiceWithDefaultRenderer(Choice):
|
|
|
+ default_renderer = CustomRenderer
|
|
|
+
|
|
|
+ data = {
|
|
|
+ "choices-TOTAL_FORMS": "1",
|
|
|
+ "choices-INITIAL_FORMS": "0",
|
|
|
+ "choices-MIN_NUM_FORMS": "0",
|
|
|
+ }
|
|
|
+
|
|
|
+ ChoiceFormSet = formset_factory(ChoiceWithDefaultRenderer)
|
|
|
+ formset = ChoiceFormSet(data, prefix="choices")
|
|
|
+ self.assertIsInstance(formset.forms[0].renderer, CustomRenderer)
|
|
|
+ self.assertIsInstance(formset.empty_form.renderer, CustomRenderer)
|
|
|
+ default_renderer = get_default_renderer()
|
|
|
+ self.assertIsInstance(formset.renderer, type(default_renderer))
|
|
|
+
|
|
|
def test_repr(self):
|
|
|
valid_formset = self.make_choiceformset([("test", 1)])
|
|
|
valid_formset.full_clean()
|