[PATCH 6/6] views: Add support for boolean 'series' parameters
Stephen Finucane
stephen at that.guru
Fri Sep 7 07:14:06 AEST 2018
Previously, we allowed users to download patch mboxes with dependencies
included using a 'series' parameter. This accepted either a numeric ID,
corresponding to the ID of the patch series that dependencies should be
included from, or a wildcard value ('*').
/patch/{patchID}/mbox/?series=123
/patch/{patchID}/mbox/?series=*
With switch to a 1:N series-patch relationship, this is clearly
unnecessary now but must be retained to avoid breaking users. However,
that doesn't mean we can't things a little clearer. Add support for
boolean parameters, which make more sense for this kind of relationship:
/patch/{patchID}/mbox/?series=true
/patch/{patchID}/mbox/?series=1
/patch/{patchID}/mbox/?series=false
/patch/{patchID}/mbox/?series=0
Signed-off-by: Stephen Finucane <stephen at that.guru>
---
TODO: I'm not sure if I should do this or introduce a new parameter
(maybe 'dependencies'?). Thoughts?
---
patchwork/tests/test_mboxviews.py | 17 +++++++++++++++++
patchwork/views/patch.py | 2 +-
patchwork/views/utils.py | 2 +-
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/patchwork/tests/test_mboxviews.py b/patchwork/tests/test_mboxviews.py
index 2add3950..9d941bf8 100644
--- a/patchwork/tests/test_mboxviews.py
+++ b/patchwork/tests/test_mboxviews.py
@@ -237,6 +237,23 @@ class MboxSeriesDependencies(TestCase):
self.assertContains(response, patch_a.content)
self.assertContains(response, patch_b.content)
+ def test_patch_with_boolean_series(self):
+ _, patch_a, patch_b = self._create_patches()
+
+ for value in ('true', '1'):
+ response = self.client.get('%s?series=%s' % (
+ reverse('patch-mbox', args=[patch_b.id]), value))
+
+ self.assertContains(response, patch_a.content)
+ self.assertContains(response, patch_b.content)
+
+ for value in ('false', '0'):
+ response = self.client.get('%s?series=%s' % (
+ reverse('patch-mbox', args=[patch_b.id]), value))
+
+ self.assertNotContains(response, patch_a.content)
+ self.assertContains(response, patch_b.content)
+
def test_patch_with_invalid_series(self):
series, patch_a, patch_b = self._create_patches()
diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py
index a8cab049..76cb43b7 100644
--- a/patchwork/views/patch.py
+++ b/patchwork/views/patch.py
@@ -137,7 +137,7 @@ def patch_mbox(request, patch_id):
series_id = request.GET.get('series')
response = HttpResponse(content_type='text/plain')
- if series_id:
+ if series_id and series_id.lower() not in ('false', '0'):
if not patch.series:
raise Http404('Patch does not have an associated series. This is '
'because the patch was processed with an older '
diff --git a/patchwork/views/utils.py b/patchwork/views/utils.py
index bfcf6aba..4644c621 100644
--- a/patchwork/views/utils.py
+++ b/patchwork/views/utils.py
@@ -141,7 +141,7 @@ def series_patch_to_mbox(patch, series_id):
Returns:
A string for the mbox file.
"""
- if series_id != '*':
+ if series_id.lower() not in ('*', 'true', '1'):
try:
series_id = int(series_id)
except ValueError:
--
2.17.1
More information about the Patchwork
mailing list