Skip to content

Commit

Permalink
No caso de choices mal configurado, filtro faz fallback para campo de…
Browse files Browse the repository at this point in the history
… input padrão
  • Loading branch information
berinhard committed Oct 5, 2020
1 parent 2b39ea7 commit a185eff
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
4 changes: 2 additions & 2 deletions core/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ def config_dynamic_filter(model_field):
kwargs = {"required": False, "label": dynamic_field.title}
field_factory = model_field.formfield

if dynamic_field.has_choices:
kwargs["choices"] = [("", "Todos")] + [(c, c) for c in dynamic_field.choices["data"]]
if dynamic_field.has_choices and dynamic_field.choices:
kwargs["choices"] = [("", "Todos")] + [(c, c) for c in dynamic_field.choices.get("data", [])]
field_factory = forms.ChoiceField

return field_factory(**kwargs)
Expand Down
18 changes: 18 additions & 0 deletions core/tests/test_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,21 @@ def test_validate_form_against_field_choices(self):
assert "uf" in form.errors
assert "city" not in form.errors
assert {"city": "Rio de Janeiro"} == form.cleaned_data

def test_choice_failback_to_default_type_if_has_choice_field_but_no_data(self):
self.table.filtering = ["uf", "city"]
self.table.save()
uf_field = self.table.get_field("uf")
uf_field.has_choices = True
uf_field.save()
city_field = self.table.get_field("city")
city_field.has_choices = True
city_field.save()

DynamicFormClasss = get_table_dynamic_form(self.table, cache=False)
form = DynamicFormClasss()

assert "uf" in form.fields
assert "city" in form.fields
assert isinstance(form.fields["uf"], type(self.get_model_field("uf").formfield()))
assert isinstance(form.fields["city"], type(self.get_model_field("city").formfield()))

0 comments on commit a185eff

Please sign in to comment.