From 48a0608801d8cb8c0df0036049187d04485d9a67 Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Tue, 24 Jul 2018 16:13:07 +0100
Subject: [PATCH] Tidy up the population of the review list preventing
 duplication

---
 .../review/templates/review/review_list.html  |  6 ++---
 opentech/apply/review/views.py                | 27 ++++++++++---------
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/opentech/apply/review/templates/review/review_list.html b/opentech/apply/review/templates/review/review_list.html
index 9c5904e81..8450319eb 100644
--- a/opentech/apply/review/templates/review/review_list.html
+++ b/opentech/apply/review/templates/review/review_list.html
@@ -21,10 +21,10 @@
 </div>
 <div class="wrapper wrapper--reviews-table js-reviews-table">
     <table class="reviews-list">
-    {% for question, answers in review_data.items %}
+    {% for answers in review_data.values %}
         <tr class="reviews-list__tr">
-            <th class="reviews-list__th">{{ question }}</th>
-            {% for answer in answers %}
+            <th class="reviews-list__th">{{ answers.question }}</th>
+            {% for answer in answers.answers %}
                 <td class="reviews-list__td">{{ answer|bleach }}</td>
             {% endfor %}
         </tr>
diff --git a/opentech/apply/review/views.py b/opentech/apply/review/views.py
index 549f19b24..9deb11e22 100644
--- a/opentech/apply/review/views.py
+++ b/opentech/apply/review/views.py
@@ -124,26 +124,29 @@ class ReviewListView(ListView):
     def get_context_data(self, **kwargs):
         review_data = {}
 
+        # Add the header rows
+        review_data['title'] = {'question': '', 'answers': list()}
+        review_data['score'] = {'question': 'Overall Score', 'answers': list()}
+        review_data['recommendation'] = {'question': 'Recommendation', 'answers': list()}
+
         for review in self.object_list:
-            # Add the name header row
-            review_data.setdefault('', []).append(str(review.author))
-            review_data.setdefault('Score', []).append(str(review.score))
-            review_data.setdefault('Recommendation', []).append(review.get_recommendation_display())
+            review_data['title']['answers'].append(str(review.author))
+            review_data['score']['answers'].append(str(review.score))
+            review_data['recommendation']['answers'].append(review.get_recommendation_display())
 
             for data, field in review.data_and_fields():
                 if not isinstance(field.block, RecommendationBlock):
-                    title = field.value['field_label']
-                    review_data.setdefault(title, [])
+                    question = field.value['field_label']
+                    review_data.setdefault(field.id, {'question': question, 'answers': list()})
 
                     if isinstance(field.block, ScoreFieldBlock):
                         value = json.loads(data)
-                        review_data.setdefault(title, []).append(str(value[0]))
-                        review_data.setdefault(f'Rate {title}', [])
-
-                        rating = int(value[1])
-                        review_data.setdefault(f'Rate {title}', []).append(RATE_CHOICES_DICT.get(rating, RATE_CHOICE_NA))
+                        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.setdefault(title, []).append(str(data))
+                        review_data[field.id]['answers'].append(str(data))
 
         return super().get_context_data(
             submission=self.submission,
-- 
GitLab