{% extends "base.html" %} {% load i18n static review_extras %} {% block head %} {{ vote_form.media }} {% endblock %} {% block title %}{% blocktrans with pk=review_request.pk title=review_request.title %}Review #{{ pk }}: {{ title }}{% endblocktrans %}{% endblock %} {% block page_id %}page-review-get{% endblock %} {% block contents %}
{% if is_locked %} {% endif %}

#{{ review_request.pk }} — {{ review_request.title }} {% state_badge review_request.state review_request.get_state_display %}

{% blocktrans with requester=review_request.requester.username created=review_request.created_at|date:"Y-m-d" %}Requested by {{ requester }} on {{ created }}{% endblocktrans %} {% if review_request.due_date %} · {% trans "Due" %}: {{ review_request.due_date|date:"Y-m-d H:i" }} {% endif %} · {% trans "View report" %}

{% trans "Reviewers" %}
{{ review_request.reviewers.count }}
{% trans "Votes cast" %}
{{ metrics.votes.approved|add:metrics.votes.rejected|add:metrics.votes.needs_changes }}
{{ metrics.participation|floatformat:0 }}% {% trans "participation" %}
{% trans "Approvals" %}
{{ metrics.votes.approved }}
{% trans "Rejections" %}
{{ metrics.votes.rejected }}
{% trans "Changes requested" %}
{{ metrics.votes.needs_changes }}
{% if review_request.description %}

{{ review_request.description|linebreaksbr }}

{% endif %}

{% trans "Reviewers & votes" %}

{% if review_request.reviewers.all %}
{% for reviewer in review_request.reviewers.all %} {% with this_vote=votes|vote_for:reviewer %} {% if this_vote %} {% else %} {% endif %} {% endwith %} {% endfor %}
{% trans "Reviewer" %} {% trans "Decision" %} {% trans "Comment" %} {% trans "Voted at" %}
{{ reviewer.username }}{% decision_badge this_vote.decision this_vote.get_decision_display %} {{ this_vote.comment|default:"—" }} {{ this_vote.voted_at|date:"Y-m-d H:i" }}{% trans "Pending" %} {% trans "Awaiting vote" %}
{% else %}

{% trans "No reviewers assigned" %}

{% trans "Edit this request to add reviewers." %}

{% if is_owner %} {% trans "Edit request" %} {% endif %}
{% endif %}

{% trans "Cases under review" %}

{% if review_request.state != "cancelled" and not is_locked %}
# {% trans "Summary" %} {% trans "Status" %}
# {% trans "Plan name" %} {% trans "Cases" %}
{% endif %} {% if items %}
{% for item in items %} {% endfor %}
# {% trans "Summary" %} {% trans "Decision" %} {% trans "Actions" %}
{{ item.case.pk }} {{ item.case.summary }} {% decision_badge item.decision item.get_decision_display %} {% if is_locked %} {% trans "Locked" %} {% else %}
{% csrf_token %}
{% if item.decision == "needs_changes" or item.decision == "rejected" %}
{% csrf_token %}
{% endif %} {% endif %}
{% else %}

{% trans "No cases attached" %}

{% trans "Open a TestCase and click 'Send for review' to add it here." %}

{% endif %}
{% if is_reviewer and review_request.state != "cancelled" and not is_locked %}

{% trans "Cast your vote" %}

{% if has_pending_items %} {% else %}
{% csrf_token %}
{{ vote_form.decision.errors }}
{{ vote_form.comment }}

{% trans "Optional. Markdown supported." %}

{{ vote_form.comment.errors }}
{% endif %}{# end has_pending_items else #}
{% endif %} {% if is_owner and review_request.state != "cancelled" and not is_locked %}
{% csrf_token %}
{% endif %} {# Threaded audit trail — derived from django-simple-history #} {% if activity %}

{% trans "Activity" %}

{% include "tcms_review/_activity.html" %}
{% endif %}
{% endblock %}