summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Löthberg <johannes@kyriasis.com>2018-05-05 21:24:19 +0200
committerJohannes Löthberg <johannes@kyriasis.com>2018-05-05 21:24:19 +0200
commita9802cd379b382fb3e55d79248506fd2aedca9e9 (patch)
tree610c8b747c4e526bb90c335e207ec7a5b34c9224
parentdad8fa4a842d6e140cb6c31799d01b04bd063b26 (diff)
downloadarchweb-a9802cd379b382fb3e55d79248506fd2aedca9e9.tar.gz
archweb-a9802cd379b382fb3e55d79248506fd2aedca9e9.zip
mirrors: Allow listing mirrors in only a specific tier
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
-rw-r--r--mirrors/urls.py1
-rw-r--r--mirrors/views/__init__.py7
2 files changed, 7 insertions, 1 deletions
diff --git a/mirrors/urls.py b/mirrors/urls.py
index f979c86e..f046af94 100644
--- a/mirrors/urls.py
+++ b/mirrors/urls.py
@@ -5,6 +5,7 @@ from .views.api import status_json, mirror_details_json, locations_json
urlpatterns = [
url(r'^$', mirrors, name='mirror-list'),
+ url(r'^tier/(?P<tier>\d+)/$', mirrors, name='mirror-list-tier'),
url(r'^status/$', status, name='mirror-status'),
url(r'^status/json/$', status_json, name='mirror-status-json'),
url(r'^status/tier/(?P<tier>\d+)/$', status, name='mirror-status-tier'),
diff --git a/mirrors/views/__init__.py b/mirrors/views/__init__.py
index 01e8519d..d7a45824 100644
--- a/mirrors/views/__init__.py
+++ b/mirrors/views/__init__.py
@@ -14,8 +14,13 @@ from ..models import (Mirror, MirrorUrl, MirrorProtocol, MirrorLog,
from ..utils import get_mirror_statuses, get_mirror_errors
-def mirrors(request):
+def mirrors(request, tier=None):
mirror_list = Mirror.objects.select_related().order_by('tier', 'name')
+ if tier is not None:
+ tier = int(tier)
+ if tier not in [t[0] for t in Mirror.TIER_CHOICES]:
+ raise Http404
+ mirror_list = mirror_list.filter(tier=tier)
protos = MirrorUrl.objects.values_list(
'mirror_id', 'protocol__protocol').order_by(
'mirror_id', 'protocol__protocol').distinct()