summaryrefslogtreecommitdiffstats
path: root/mirrors/views
diff options
context:
space:
mode:
authorGenki Sky <sky@genki.is>2018-04-21 21:59:09 -0400
committerJelle van der Waa <jelle@vdwaa.nl>2018-04-22 19:39:30 +0200
commita0ce797dedf5e31c6354917c51b16efc1d0508c8 (patch)
treecb04560e08d99d13124ce1afda2f05779db00cc9 /mirrors/views
parentdad8fa4a842d6e140cb6c31799d01b04bd063b26 (diff)
downloadarchweb-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.py3
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']