Beispiel #1
0
    def get_context_data(self, **kwargs):
        review_data = {}

        # Add the header rows
        review_data['title'] = {'question': '', 'answers': list()}
        review_data['opinions'] = {'question': 'Opinions', 'answers': list()}
        review_data['score'] = {'question': 'Overall Score', 'answers': list()}
        review_data['recommendation'] = {
            'question': 'Recommendation',
            'answers': list()
        }
        review_data['revision'] = {'question': 'Revision', 'answers': list()}
        review_data['comments'] = {'question': 'Comments', 'answers': list()}

        responses = self.object_list.count()
        ordered_reviewers = AssignedReviewers.objects.filter(
            submission=self.submission).reviewed().review_order()

        reviews = {review.author: review for review in self.object_list}
        for i, reviewer in enumerate(ordered_reviewers):
            review = reviews[reviewer]
            author = '<a href="{}"><span>{}</span></a>'.format(
                review.get_absolute_url(), review.author)
            if review.author.role:
                author += generate_image_tag(review.author.role.icon, '12x12')
            author = f'<div>{author}</div>'

            review_data['title']['answers'].append(author)
            opinions_template = get_template(
                'review/includes/review_opinions_list.html')
            opinions_html = opinions_template.render(
                {'opinions': review.opinions.select_related('author').all()})
            review_data['opinions']['answers'].append(opinions_html)
            review_data['score']['answers'].append(review.get_score_display)
            review_data['recommendation']['answers'].append(
                review.get_recommendation_display())
            review_data['comments']['answers'].append(
                review.get_comments_display(include_question=False))
            if review.for_latest:
                revision = 'Current'
            else:
                revision = '<a href="{}">Compare</a>'.format(
                    review.get_compare_url())
            review_data['revision']['answers'].append(revision)

            for field_id in review.fields:
                field = review.field(field_id)
                data = review.data(field_id)
                if self.should_display(field):
                    question = field.value['field_label']
                    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,
                                        review_data=review_data,
                                        **kwargs)
Beispiel #2
0
    def render_role_icon(self, value):
        if value:
            image = CustomImage.objects.filter(id=value).first()
            if image:
                filter_spec = 'fill-20x20'
                return generate_image_tag(image, filter_spec)

        return ''
Beispiel #3
0
def render_icon(image):
    if not image:
        return ''
    filter_spec = 'fill-20x20'
    return generate_image_tag(image, filter_spec)