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