Skip to content

Commit

Permalink
views: Add notes to patch-detail view
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
andrepapoti committed Jul 22, 2024
1 parent dc75d68 commit 5d2943e
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
18 changes: 18 additions & 0 deletions patchwork/templates/patchwork/submission.html
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,24 @@ <h2>Message</h2>
</pre>
</div>

{% for note in notes %}
{% if forloop.first %}
<h2>Notes</h2>
{% endif %}
<a name="{{ item.id }}"></a>
<div class="submission-message">
<div class="meta">
{{ note.patch.submitter|personify:project }}
<span class="message-date">
Last modified: {{ note.last_modified }} UTC
</span>
</div>
<pre class="content">
{{ note.content }}
</pre>
</div>
{% endfor %}

{% for item in comments %}
{% if forloop.first %}
<h2>Comments</h2>
Expand Down
50 changes: 50 additions & 0 deletions patchwork/tests/views/test_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from patchwork.models import State
from patchwork.tests.utils import create_check
from patchwork.tests.utils import create_maintainer
from patchwork.tests.utils import create_note
from patchwork.tests.utils import create_patch
from patchwork.tests.utils import create_patch_comment
from patchwork.tests.utils import create_patches
Expand Down Expand Up @@ -247,6 +248,55 @@ def test_comment_redirect(self):
response = self.client.get(requested_url)
self.assertRedirects(response, redirect_url)

def test_show_note_for_maintainer(self):
project = create_project()
user = create_maintainer(project)
patch = create_patch(project=project)
note = create_note(patch=patch, submitter=user)
self.client.login(username=user.username, password=user.username)
requested_url = reverse(
'patch-detail',
kwargs={
'project_id': patch.project.linkname,
'msgid': patch.encoded_msgid,
},
)
response = self.client.get(requested_url)
self.assertIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
self.assertIn(note.content.encode('utf-8'), response.content)

def test_hide_private_note(self):
project = create_project()
user = create_maintainer(project)
patch = create_patch(project=project)
note = create_note(patch=patch, submitter=user)
requested_url = reverse(
'patch-detail',
kwargs={
'project_id': patch.project.linkname,
'msgid': patch.encoded_msgid,
},
)
response = self.client.get(requested_url)
self.assertNotIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
self.assertNotIn(note.content.encode('utf-8'), response.content)

def test_show_public_note(self):
project = create_project()
user = create_maintainer(project)
patch = create_patch(project=project)
note = create_note(patch=patch, submitter=user, maintainer_only=False)
requested_url = reverse(
'patch-detail',
kwargs={
'project_id': patch.project.linkname,
'msgid': patch.encoded_msgid,
},
)
response = self.client.get(requested_url)
self.assertIn('<h2>Notes</h2>'.encode('utf-8'), response.content)
self.assertIn(note.content.encode('utf-8'), response.content)

def test_old_detail_url(self):
patch = create_patch()

Expand Down
10 changes: 10 additions & 0 deletions patchwork/views/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,15 @@ def patch_detail(request, project_id, msgid):
'submitter', 'date', 'id', 'content', 'patch', 'addressed'
)

if (
request.user.is_superuser
or request.user.is_authenticated
and patch.project in request.user.profile.maintainer_projects.all()
):
notes = patch.note.all()
else:
notes = patch.note.filter(maintainer_only=False)

if patch.related:
related_same_project = patch.related.patches.only(
'name', 'msgid', 'project', 'related'
Expand All @@ -136,6 +145,7 @@ def patch_detail(request, project_id, msgid):
related_same_project = []
related_different_project = []

context['notes'] = notes
context['comments'] = comments
context['checks'] = Patch.filter_unique_checks(
patch.check_set.all().select_related('user'),
Expand Down

0 comments on commit 5d2943e

Please sign in to comment.