diff --git a/opentech/apply/funds/models/mixins.py b/opentech/apply/funds/models/mixins.py index 31a5b899affdd6817f197a886a099939f855dd7a..1edb02f148b5acc24dccc451467fbde543acb8ba 100644 --- a/opentech/apply/funds/models/mixins.py +++ b/opentech/apply/funds/models/mixins.py @@ -3,7 +3,9 @@ from django.utils.text import mark_safe 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.stream_forms.blocks import ( + FileFieldBlock, FormFieldBlock, ImageFieldBlock, MultiFileFieldBlock +) from opentech.apply.utils.blocks import SingleIncludeMixin from opentech.apply.stream_forms.blocks import UploadableMediaBlock @@ -112,6 +114,14 @@ class AccessFormData: if isinstance(field.block, FormFieldBlock): yield field_id + @property + def question_text_field_ids(self): + for field_id, field in self.fields.items(): + if isinstance(field.block, (FileFieldBlock, ImageFieldBlock, MultiFileFieldBlock)): + pass + elif isinstance(field.block, FormFieldBlock): + yield field_id + @property def raw_fields(self): # Field ids to field class mapping - similar to raw_data @@ -168,6 +178,14 @@ class AccessFormData: for field_id in self.normal_blocks ] + def render_text_blocks_answers(self): + # Returns a list of the rendered answers of type text + return [ + self.render_answer(field_id, include_question=True) + for field_id in self.question_text_field_ids + if field_id not in self.named_blocks + ] + def output_answers(self): # Returns a safe string of the rendered answers return mark_safe(''.join(self.render_answers())) diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py index b75cf12325e6c96bf0015eb74be4c308e69f1380..9d0376b7d31452fcb5c30ce2792e830e7cfa4889 100644 --- a/opentech/apply/funds/views.py +++ b/opentech/apply/funds/views.py @@ -462,11 +462,11 @@ class RevisionCompareView(DetailView): def compare_revisions(self, from_data, to_data): self.object.form_data = from_data.form_data - from_fields = self.object.render_answers() + from_rendered_text_fields = self.object.render_text_blocks_answers() from_required = self.render_required() self.object.form_data = to_data.form_data - to_fields = self.object.render_answers() + to_rendered_text_fields = self.object.render_text_blocks_answers() to_required = self.render_required() # Compare all the required fields @@ -478,12 +478,12 @@ class RevisionCompareView(DetailView): setattr(self.object, 'get_{}_display'.format(field), diff) # Compare all the answers - diffed_answers = [ + diffed_text_fields_answers = [ compare(*fields, should_bleach=False) - for fields in zip(from_fields, to_fields) + for fields in zip(from_rendered_text_fields, to_rendered_text_fields) ] - self.object.output_answers = mark_safe(''.join(diffed_answers)) + self.object.output_answers = mark_safe(''.join(diffed_text_fields_answers)) def render_required(self): return [