From 843da2e9468043cde9db7e5c1470686b2e5b5e03 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Wed, 26 Sep 2018 16:16:38 +0100 Subject: [PATCH] Add a test to ensure that everything still works --- opentech/apply/funds/models/mixins.py | 16 +++++++++++++--- opentech/apply/funds/tests/test_views.py | 5 +++++ opentech/apply/stream_forms/blocks.py | 3 --- opentech/apply/stream_forms/testing/factories.py | 8 +++++++- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/opentech/apply/funds/models/mixins.py b/opentech/apply/funds/models/mixins.py index 6792c477a..178a102ae 100644 --- a/opentech/apply/funds/models/mixins.py +++ b/opentech/apply/funds/models/mixins.py @@ -4,7 +4,7 @@ from django.core.files import File from django.core.files.storage import get_storage_class from opentech.apply.stream_forms.blocks import FormFieldBlock -from opentech.apply.utils.blocks import MustIncludeFieldBlock +from opentech.apply.utils.blocks import SingleIncludeMixin from opentech.apply.stream_forms.blocks import UploadableMediaBlock from opentech.apply.stream_forms.files import StreamFieldFile @@ -16,6 +16,10 @@ __all__ = ['AccessFormData'] submission_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))() +class UnusedFieldException(Exception): + pass + + class AccessFormData: """Mixin for interacting with form data from streamfields @@ -84,7 +88,10 @@ class AccessFormData: def field(self, id): definitive_id = self.get_definitive_id(id) - return self.raw_fields[definitive_id] + try: + return self.raw_fields[definitive_id] + except KeyError: + raise UnusedFieldException(id) from None def data(self, id): definitive_id = self.get_definitive_id(id) @@ -126,7 +133,10 @@ class AccessFormData: } def render_answer(self, field_id, include_question=False): - field = self.field(field_id) + try: + field = self.field(field_id) + except UnusedFieldException: + return None data = self.data(field_id) return field.render(context={'data': data, 'include_question': include_question}) diff --git a/opentech/apply/funds/tests/test_views.py b/opentech/apply/funds/tests/test_views.py index b255510b2..62c1c7928 100644 --- a/opentech/apply/funds/tests/test_views.py +++ b/opentech/apply/funds/tests/test_views.py @@ -175,6 +175,11 @@ class TestStaffSubmissionView(BaseSubmissionViewTestCase): self.assertEqual(old_status, submission.status) self.assertEqual(new_title, submission.title) + def test_not_included_fields_render(self): + submission = ApplicationSubmissionFactory(form_fields__exclude__value=True) + response = self.get_page(submission) + self.assertNotContains(response, 'Value') + class TestReviewersUpdateView(BaseSubmissionViewTestCase): user_factory = StaffFactory diff --git a/opentech/apply/stream_forms/blocks.py b/opentech/apply/stream_forms/blocks.py index 72ca50281..707f480ca 100644 --- a/opentech/apply/stream_forms/blocks.py +++ b/opentech/apply/stream_forms/blocks.py @@ -68,9 +68,6 @@ class FormFieldBlock(StructBlock): class OptionalFormFieldBlock(FormFieldBlock): required = BooleanBlock(label=_('Required'), required=False) - def get_searchable_content(self, value, data): - return data - CHARFIELD_FORMATS = [ ('email', _('Email')), diff --git a/opentech/apply/stream_forms/testing/factories.py b/opentech/apply/stream_forms/testing/factories.py index b60588aef..902ba4ce9 100644 --- a/opentech/apply/stream_forms/testing/factories.py +++ b/opentech/apply/stream_forms/testing/factories.py @@ -56,7 +56,13 @@ class FormDataFactory(factory.Factory, metaclass=AddFormFieldsMetaclass): form_data = {} for name, answer in kwargs.items(): - form_data[form_definition[name]] = answer + try: + key = form_definition[name] + except KeyError: + # We are not using that field - don't add the submission data + pass + else: + form_data[key] = answer if clean: clean_object = for_factory() -- GitLab