]> git.ipfire.org Git - thirdparty/patchwork.git/commit
Don't discard values from 'archive' filter
authorStephen Finucane <stephen@that.guru>
Wed, 13 Jun 2018 21:53:22 +0000 (22:53 +0100)
committerStephen Finucane <stephen@that.guru>
Thu, 14 Jun 2018 14:19:49 +0000 (15:19 +0100)
commitb020e07378b22d1f0115444d43f30ebe02da3f80
tree32a66f3f4f5a0a294f5e542da0d1d77452309f99
parent9d669c2d6408ded9311f4deb522a809e9eac84e2
Don't discard values from 'archive' filter

The pagination functionality used in the 'patchwork.view.generic_list'
generates the filter querystring from scratch. To do this, it calls the
'patchwork.filters.Filters.params' function, which in turn calls the
'patchwork.filters.Filter.key' function for each filter. If any of these
'key' functions return None, the relevant filter is not included in the
querystring. This ensures we don't end up with a load of filters like
the below:

    ?submitter=&state=&series=&q=&delegate=&archive=both

which would be functionally equivalent to:

    ?archive=both

There is one exception to this rule, however: ArchiveFilter. This is a
little unusual in that it is active by default, excluding patches that
are "archived" from the list. As a result, the 'key' function should
return None for this active state, not for the disabled state. This has
been the case up until commit d848f046 which falsely equated 'is False'
with 'is None'. This small typo resulted in the filter being ignored
when generating pagination links and essentially broke pagination for
some use cases.

Fix this up. We could probably simplify this thing greatly by not
recalculating filters for pagination at least or, better yet, by using
django-filter here too. That is a change for another day though.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Reported-by: John McNamara <john.mcnamara@intel.com>
Reported-by: Eli Schwartz <eschwartz93@gmail.com>
Fixes: d848f046 ("trivial: Don't shadow built-ins")
Closes: #184
(cherry picked from commit 24c4bef32e1df3da59695372c686af58f8846208)
patchwork/filters.py