From b9e640595c2afdc2eb5bd48702a54b90e3de3318 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Fri, 17 Aug 2018 09:18:28 +0100 Subject: [PATCH] Use the block render method to control display and more robust ordering --- opentech/apply/review/views.py | 14 ++++---------- opentech/apply/utils/blocks.py | 3 +++ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/opentech/apply/review/views.py b/opentech/apply/review/views.py index 36d8ef4b2..93946ea71 100644 --- a/opentech/apply/review/views.py +++ b/opentech/apply/review/views.py @@ -134,6 +134,8 @@ class ReviewListView(ListView): review_data['recommendation'] = {'question': 'Recommendation', 'answers': list()} review_data['revision'] = {'question': 'Revision', 'answers': list()} + responses = self.object_list.count() + for i, review in enumerate(self.object_list): review_data['title']['answers'].append(str(review.author)) review_data['score']['answers'].append(str(review.score)) @@ -150,16 +152,8 @@ class ReviewListView(ListView): if not isinstance(field.block, (RecommendationBlock, RichTextBlock)): question = field.value['field_label'] # If we haven't see the question before we backfill with '-' - review_data.setdefault(field.id, {'question': question, 'answers': [''] * i}) - - if isinstance(field.block, ScoreFieldBlock): - value = json.loads(data) - rating_value = int(value[1]) - rating = RATE_CHOICES_DICT.get(rating_value, RATE_CHOICE_NA) - comment = str(value[0]) - review_data[field.id]['answers'].append(rating + comment) - else: - review_data[field.id]['answers'].append(str(data)) + review_data.setdefault(field.id, {'question': question, 'answers': [''] * responses}) + review_data[field.id]['answers'][i] = field.block.render(None, {'data': data}) return super().get_context_data( submission=self.submission, diff --git a/opentech/apply/utils/blocks.py b/opentech/apply/utils/blocks.py index ee5aac706..898e0487a 100644 --- a/opentech/apply/utils/blocks.py +++ b/opentech/apply/utils/blocks.py @@ -38,6 +38,9 @@ class RichTextFieldBlock(TextFieldBlock): def get_searchable_content(self, value, data): return bleach.clean(data or '', tags=[], strip=True) + def no_response(self): + return '<p>No response</p>' + class CustomFormFieldsBlock(StreamBlock): rich_text = RichTextFieldBlock(group=_('Fields')) -- GitLab