[PATCH] patch-list: Link to delegate's assigned patches

Stephen Finucane stephen at that.guru
Tue Nov 30 04:58:58 AEDT 2021


On Mon, 2021-11-22 at 18:20 -0500, Sean Anderson wrote:
> This adds a link to all patches currently delegated to a user. This can
> be much easier than going through the delegate filter, especially if you
> already have a patch delegated to that user. This also replaces username
> text with their real name or email (if they are populated). This can
> help submitters figure out who their patches are assigned to (in cases
> where the username and real name of the delegate significantly diverge).

Thanks for the patch. Some comments below. If you can address these, I'd be
happy to apply this.

Stephen

PS: This didn't appear on Patchwork. I've no idea why...

> Signed-off-by: Sean Anderson <sean.anderson at seco.com>
> ---
> 
>  .../templates/patchwork/partials/patch-list.html    |  2 +-
>  patchwork/templatetags/person.py                    | 13 ++++++++++++-
>  .../notes/link-to-delegates-366d5b18f1367fd6.yaml   |  5 +++++
>  3 files changed, 18 insertions(+), 2 deletions(-)
>  create mode 100644 releasenotes/notes/link-to-delegates-366d5b18f1367fd6.yaml
> 
> diff --git a/patchwork/templates/patchwork/partials/patch-list.html b/patchwork/templates/patchwork/partials/patch-list.html
> index 02d6dff..4918aeb 100644
> --- a/patchwork/templates/patchwork/partials/patch-list.html
> +++ b/patchwork/templates/patchwork/partials/patch-list.html
> @@ -204,7 +204,7 @@ $(document).ready(function() {
>     <td class="text-nowrap">{{ patch|patch_checks }}</td>
>     <td class="text-nowrap">{{ patch.date|date:"Y-m-d" }}</td>
>     <td>{{ patch.submitter|personify:project }}</td>
> -   <td>{{ patch.delegate.username }}</td>
> +   <td>{{ patch.delegate|delegatify:project }}</td>
>     <td>{{ patch.state }}</td>
>    </tr>
>   {% empty %}
> diff --git a/patchwork/templatetags/person.py b/patchwork/templatetags/person.py
> index 61937d9..433d713 100644
> --- a/patchwork/templatetags/person.py
> +++ b/patchwork/templatetags/person.py
> @@ -8,7 +8,7 @@ from django.urls import reverse
>  from django.utils.html import escape
>  from django.utils.safestring import mark_safe
>  
> -from patchwork.filters import SubmitterFilter
> +from patchwork.filters import SubmitterFilter, DelegateFilter
>  
>  
>  register = template.Library()
> @@ -28,3 +28,14 @@ def personify(person, project):
>          url, SubmitterFilter.param, escape(person.id), linktext)
>  
>      return mark_safe(out)
> +
> + at register.filter
> +def delegatify(delegate, project):
> +
> +    linktext = escape(delegate.name or delegate.email or delegate.username)

delegate will be None if the patch hasn't been delegated to anyone. You need to
handle this.

> +    url = reverse('patch-list',
> +                  kwargs={'project_id': project.linkname})

style nit: I think this would all fit on one line?

> +    out = '<a href="%s?%s=%s">%s</a>' % (
> +        url, DelegateFilter.param, escape(delegate.id), linktext)
> +
> +    return mark_safe(out)

It would be great if there was some unit tests for this filter to ensure things
are working as expected. I don't think we have any tests for this stuff
currently but it should be pretty trivial to add, either in
'patchwork/tests/views/test_patch.py' or in a new
'patchwork/tests/templatetags/test_person.py' file. Heck, why not both, since
the former are really more functional test'y than the latter. Note that you can
build on an existing test for the former and refer to this StackOverflow answer
for a guide on how to do the latter [1].

> diff --git a/releasenotes/notes/link-to-delegates-366d5b18f1367fd6.yaml b/releasenotes/notes/link-to-delegates-366d5b18f1367fd6.yaml
> new file mode 100644
> index 0000000..aa69df3
> --- /dev/null
> +++ b/releasenotes/notes/link-to-delegates-366d5b18f1367fd6.yaml
> @@ -0,0 +1,5 @@
> +---
> +features:
> +  - |
> +    The delegate column in the patch list now links to all patches delegated to
> +    that user.

[1] https://stackoverflow.com/a/49604862/613428


More information about the Patchwork mailing list