Skip to content
Snippets Groups Projects
Commit 87ce3836 authored by Dan Braghis's avatar Dan Braghis Committed by Todd Dembrey
Browse files

Swap streamfield data for the review detail view

parent abf8257f
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.urls import reverse
from django.utils.safestring import mark_safe
from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel
from wagtail.core.fields import StreamField
......@@ -102,6 +103,25 @@ class Review(BaseStreamForm, models.Model):
def __repr__(self):
return f'<{self.__class__.__name__}: {str(self.form_data)}>'
def data_and_fields(self):
for stream_value in self.form_fields:
try:
data = self.form_data[stream_value.id]
except KeyError:
pass # It was a named field or a paragraph
else:
yield data, stream_value
@property
def fields(self):
return [
field.render(context={'data': data})
for data, field in self.data_and_fields()
]
def render_answers(self):
return mark_safe(''.join(self.fields))
@receiver(post_save, sender=Review)
def update_submission_reviewers_list(sender, **kwargs):
......
......@@ -12,7 +12,7 @@
<div class="grid">
<div>
<h5>Recommendation</h5>
<p>{{ review.recommendation }}</p>
<p>{{ review.get_recommendation_display }}</p>
</div>
<div>
<h5>Score</h5>
......@@ -21,14 +21,6 @@
</div>
<div class="rich-text rich-text--answers">
{% for question, answer in review_data.items %}
{% if answer == "<field_group_title>" %}
{# Field group title #}
<h4>{{ question }}</h4>
{% else %}
<h5>{{ question }}</h5>
{{ answer|bleach }}
{% endif %}
{% endfor %}
{{ object.render_answers }}
</div>
{% endblock %}
......@@ -104,36 +104,6 @@ class ReviewDetailView(DetailView):
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
review = self.get_object().review
form_used = get_form_for_stage(self.get_object().submission)
review_data = {}
for name, field in form_used.base_fields.items():
try:
# Add titles which exist
title = form_used.titles[field.group]
# Setting the value to a flag, so the output is treated slightly differently
# This will change with the StreamForms implementation
review_data.setdefault(title, '<field_group_title>')
except AttributeError:
pass
value = review[name]
try:
choices = dict(field.choices)
except AttributeError:
pass
else:
# Update the stored value to the display value
value = choices[int(value)]
review_data.setdefault(field.label, str(value))
return super().get_context_data(
review_data=review_data,
**kwargs
)
@method_decorator(staff_required, name='dispatch')
class ReviewListView(ListView):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment