Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Organiza metadados de campos #466

Merged
merged 10 commits into from
Oct 9, 2020
7 changes: 5 additions & 2 deletions core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ def __str__(self):

@property
def filtering(self):
return self.filtering_fields
return [f.name for f in self.fields.frontend_filters()]

@property
def collect_date(self):
Expand Down Expand Up @@ -474,7 +474,10 @@ def for_table(self, table):
return self.filter(table=table)

def choiceables(self):
return self.filter(has_choices=True, frontend_filter=True)
return self.frontend_filter().filter(has_choices=True)
berinhard marked this conversation as resolved.
Show resolved Hide resolved

def frontend_filters(self):
return self.filter(frontend_filter=True)


class Field(models.Model):
Expand Down
14 changes: 5 additions & 9 deletions core/tests/test_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class DynamicModelFormTests(BaseTestCaseWithSampleDataset):
]

def setUp(self):
self.table.filtering = []
self.table.field_set.all().update(frontend_filter=False)
self.table.save()

def get_model_field(self, name):
Expand All @@ -26,8 +26,7 @@ def test_table_without_filters_gets_empty_form(self):
assert 0 == len(form.fields)

def test_generate_form_based_in_table_filtering(self):
self.table.filtering = ["uf", "city"]
self.table.save()
self.table.field_set.filter(name__in=["uf", "city"]).update(frontend_filter=True)

DynamicFormClasss = get_table_dynamic_form(self.table, cache=False)
form = DynamicFormClasss()
Expand All @@ -38,8 +37,7 @@ def test_generate_form_based_in_table_filtering(self):
assert isinstance(form.fields["city"], type(self.get_model_field("city").formfield()))

def test_filter_form_does_not_invalidate_if_no_data(self):
self.table.filtering = ["uf", "city"]
self.table.save()
self.table.field_set.filter(name__in=["uf", "city"]).update(frontend_filter=True)

DynamicFormClasss = get_table_dynamic_form(self.table, cache=False)
form = DynamicFormClasss(data={})
Expand All @@ -48,8 +46,7 @@ def test_filter_form_does_not_invalidate_if_no_data(self):
assert {"uf": "", "city": ""} == form.cleaned_data

def test_validate_form_against_field_choices(self):
self.table.filtering = ["uf", "city"]
self.table.save()
self.table.field_set.filter(name__in=["uf", "city"]).update(frontend_filter=True)
uf_field = self.table.get_field("uf")
uf_field.has_choices = True
uf_field.choices = {"data": ["RJ", "SP", "MG"]}
Expand All @@ -76,8 +73,7 @@ def test_validate_form_against_field_choices(self):
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()
self.table.field_set.filter(name__in=["uf", "city"]).update(frontend_filter=True)
uf_field = self.table.get_field("uf")
uf_field.has_choices = True
uf_field.save()
Expand Down