Skip to content

Commit 5d2943e

Browse files
committed
views: Add notes to patch-detail view
The submission template now includes a section to display notes, these can be filtered out depending if the request user is a maintainer for the patch's project and on the note maintainer_only attribute Signed-off-by: andrepapoti <andrepapoti@gmail.com>
1 parent dc75d68 commit 5d2943e

File tree

3 files changed

+78
-0
lines changed

3 files changed

+78
-0
lines changed

Diff for: patchwork/templates/patchwork/submission.html

+18
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,24 @@ <h2>Message</h2>
266266
</pre>
267267
</div>
268268

269+
{% for note in notes %}
270+
{% if forloop.first %}
271+
<h2>Notes</h2>
272+
{% endif %}
273+
<a name="{{ item.id }}"></a>
274+
<div class="submission-message">
275+
<div class="meta">
276+
{{ note.patch.submitter|personify:project }}
277+
<span class="message-date">
278+
Last modified: {{ note.last_modified }} UTC
279+
</span>
280+
</div>
281+
<pre class="content">
282+
{{ note.content }}
283+
</pre>
284+
</div>
285+
{% endfor %}
286+
269287
{% for item in comments %}
270288
{% if forloop.first %}
271289
<h2>Comments</h2>

Diff for: patchwork/tests/views/test_patch.py

+50
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from patchwork.models import State
2020
from patchwork.tests.utils import create_check
2121
from patchwork.tests.utils import create_maintainer
22+
from patchwork.tests.utils import create_note
2223
from patchwork.tests.utils import create_patch
2324
from patchwork.tests.utils import create_patch_comment
2425
from patchwork.tests.utils import create_patches
@@ -247,6 +248,55 @@ def test_comment_redirect(self):
247248
response = self.client.get(requested_url)
248249
self.assertRedirects(response, redirect_url)
249250

251+
def test_show_note_for_maintainer(self):
252+
project = create_project()
253+
user = create_maintainer(project)
254+
patch = create_patch(project=project)
255+
note = create_note(patch=patch, submitter=user)
256+
self.client.login(username=user.username, password=user.username)
257+
requested_url = reverse(
258+
'patch-detail',
259+
kwargs={
260+
'project_id': patch.project.linkname,
261+
'msgid': patch.encoded_msgid,
262+
},
263+
)
264+
response = self.client.get(requested_url)
265+
self.assertIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
266+
self.assertIn(note.content.encode('utf-8'), response.content)
267+
268+
def test_hide_private_note(self):
269+
project = create_project()
270+
user = create_maintainer(project)
271+
patch = create_patch(project=project)
272+
note = create_note(patch=patch, submitter=user)
273+
requested_url = reverse(
274+
'patch-detail',
275+
kwargs={
276+
'project_id': patch.project.linkname,
277+
'msgid': patch.encoded_msgid,
278+
},
279+
)
280+
response = self.client.get(requested_url)
281+
self.assertNotIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
282+
self.assertNotIn(note.content.encode('utf-8'), response.content)
283+
284+
def test_show_public_note(self):
285+
project = create_project()
286+
user = create_maintainer(project)
287+
patch = create_patch(project=project)
288+
note = create_note(patch=patch, submitter=user, maintainer_only=False)
289+
requested_url = reverse(
290+
'patch-detail',
291+
kwargs={
292+
'project_id': patch.project.linkname,
293+
'msgid': patch.encoded_msgid,
294+
},
295+
)
296+
response = self.client.get(requested_url)
297+
self.assertIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
298+
self.assertIn(note.content.encode('utf-8'), response.content)
299+
250300
def test_old_detail_url(self):
251301
patch = create_patch()
252302

Diff for: patchwork/views/patch.py

+10
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,15 @@ def patch_detail(request, project_id, msgid):
122122
'submitter', 'date', 'id', 'content', 'patch', 'addressed'
123123
)
124124

125+
if (
126+
request.user.is_superuser
127+
or request.user.is_authenticated
128+
and patch.project in request.user.profile.maintainer_projects.all()
129+
):
130+
notes = patch.note.all()
131+
else:
132+
notes = patch.note.filter(maintainer_only=False)
133+
125134
if patch.related:
126135
related_same_project = patch.related.patches.only(
127136
'name', 'msgid', 'project', 'related'
@@ -136,6 +145,7 @@ def patch_detail(request, project_id, msgid):
136145
related_same_project = []
137146
related_different_project = []
138147

148+
context['notes'] = notes
139149
context['comments'] = comments
140150
context['checks'] = Patch.filter_unique_checks(
141151
patch.check_set.all().select_related('user'),

0 commit comments

Comments
 (0)