diff options
author | Johannes Löthberg <johannes@kyriasis.com> | 2018-05-05 21:24:19 +0200 |
---|---|---|
committer | Johannes Löthberg <johannes@kyriasis.com> | 2018-05-05 21:24:19 +0200 |
commit | a9802cd379b382fb3e55d79248506fd2aedca9e9 (patch) | |
tree | 610c8b747c4e526bb90c335e207ec7a5b34c9224 | |
parent | dad8fa4a842d6e140cb6c31799d01b04bd063b26 (diff) | |
download | archweb-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.py | 1 | ||||
-rw-r--r-- | mirrors/views/__init__.py | 7 |
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() |