Skip to content

Commit 0f1e82c

Browse files
andrepapotivictor-accarini
authored andcommitted
feat: add review intentions to patch view
1 parent 793e7cb commit 0f1e82c

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

patchwork/templates/patchwork/submission.html

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,35 @@ <h2>Message</h2>
187187
</pre>
188188
</div>
189189

190+
<h2>Users intending to review</h2>
191+
{% if intentions %}
192+
<ul>
193+
{% for intention in intentions %}
194+
<li>
195+
{{ intention.user.username }} ({{ intention.user.email }}) - Review expiration date: {{ intention.review_expiry_date }}
196+
</li>
197+
{% endfor %}
198+
</ul>
199+
{% else %}
200+
<p>No users have declared interest in reviewing this patch.</p>
201+
{% endif %}
202+
203+
{% if planning_to_review %}
204+
<form id="declare-review-form" method="post">
205+
{% csrf_token %}
206+
Current review intention expires in {{ review_expiry_date }}
207+
<br>
208+
<input type="hidden" name="action" value="remove-review">
209+
<input type="submit" class="patch-form-submit btn btn-primary" value="Remove review interest">
210+
</form>
211+
{% else %}
212+
<form id="declare-review-form" method="post">
213+
{% csrf_token %}
214+
<input type="hidden" name="action" value="add-review">
215+
<input type="submit" class="patch-form-submit btn btn-primary" value="Declare review interest">
216+
</form>
217+
{% endif %}
218+
190219
{% for item in comments %}
191220
{% if forloop.first %}
192221
<h2>Comments</h2>

patchwork/views/patch.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from patchwork.forms import PatchForm
1717
from patchwork.models import Cover
1818
from patchwork.models import Patch
19+
from patchwork.models import PatchReviewIntention
1920
from patchwork.models import Project
2021
from patchwork.views import generic_list
2122
from patchwork.views import set_bundle
@@ -80,6 +81,30 @@ def patch_detail(request, project_id, msgid):
8081
errors = set_bundle(
8182
request, project, action, request.POST, [patch]
8283
)
84+
elif action == 'add-review':
85+
if request.user.is_authenticated:
86+
PatchReviewIntention.objects.get_or_create(
87+
patch=patch,
88+
user=request.user
89+
)
90+
patch.has_planned_review = patch.planning_to_review.exists()
91+
patch.save()
92+
93+
messages.success(request, "You have declared interest in reviewing this patch.")
94+
else:
95+
messages.error(request, "You must be logged in to declare review interest.")
96+
97+
elif action == 'remove-review':
98+
if request.user.is_authenticated:
99+
PatchReviewIntention.objects.filter(
100+
patch=patch,
101+
user=request.user
102+
).delete()
103+
patch.has_planned_review = patch.planning_to_review.exists()
104+
patch.save()
105+
messages.success(request, "You have removed your interest in reviewing this patch.")
106+
else:
107+
messages.error(request, "You must be logged in to remove review interest.")
83108

84109
elif not editable:
85110
return HttpResponseForbidden()
@@ -93,6 +118,17 @@ def patch_detail(request, project_id, msgid):
93118
if request.user.is_authenticated:
94119
context['bundles'] = request.user.bundles.all()
95120

121+
intentions = PatchReviewIntention.objects.filter(patch=patch)
122+
123+
context['intentions'] = intentions
124+
context['planning_to_review'] = False
125+
context['review_expiry_date'] = None
126+
for intention in intentions:
127+
intention.review_expiry_date = intention.last_time_marked_for_review + patch.state.review_intention_expiration_time
128+
if intention.user == request.user:
129+
context['planning_to_review'] = True
130+
context['review_expiry_date'] = intention.last_time_marked_for_review + patch.state.review_intention_expiration_time
131+
96132
comments = patch.comments.all()
97133
comments = comments.select_related('submitter')
98134
comments = comments.only(

0 commit comments

Comments
 (0)