diff options
author | Genki Sky <sky@genki.is> | 2018-04-21 21:59:09 -0400 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2018-04-22 19:39:30 +0200 |
commit | a0ce797dedf5e31c6354917c51b16efc1d0508c8 (patch) | |
tree | cb04560e08d99d13124ce1afda2f05779db00cc9 /mirrors/views | |
parent | dad8fa4a842d6e140cb6c31799d01b04bd063b26 (diff) | |
download | archweb-a0ce797dedf5e31c6354917c51b16efc1d0508c8.tar.gz archweb-a0ce797dedf5e31c6354917c51b16efc1d0508c8.zip |
mirrorlist: Accept GET parameters as filters
This fixes a regression. Originally request.REQUEST was used, but django
1.9 removed this. In its stead, request.POST was used unconditionally.
However, this results in any GET request returning *all* mirrors, rather
than filtering as requested in the parameters.
This patch uses POST or GET based on the request method. This fixes the
behavior of the [mirror-filter-form], and any scripts depending on the
generated URL format. Accordingly, make test_mirrorlist_filter() test
both the success and failure cases, rather than just success.
[mirror-filter-form]: https://www.archlinux.org/mirrorlist/
Signed-off-by: Genki Sky <sky@genki.is>
Diffstat (limited to 'mirrors/views')
-rw-r--r-- | mirrors/views/mirrorlist.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/mirrors/views/mirrorlist.py b/mirrors/views/mirrorlist.py index 35d59e82..45c01819 100644 --- a/mirrors/views/mirrorlist.py +++ b/mirrors/views/mirrorlist.py @@ -55,7 +55,8 @@ class MirrorlistForm(forms.Form): @csrf_exempt def generate_mirrorlist(request): if request.method == 'POST' or len(request.GET) > 0: - form = MirrorlistForm(data=request.POST) + data = request.POST if request.method == 'POST' else request.GET + form = MirrorlistForm(data=data) if form.is_valid(): countries = form.cleaned_data['country'] protocols = form.cleaned_data['protocol'] |