summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-04-25 07:49:26 -0500
committerDan McGee <dan@archlinux.org>2012-04-25 07:49:26 -0500
commit4dcfaddff526dca2828571326aa7263a3272fcdf (patch)
treeb06a4115e1bca1e1c86ff5218775307a86827a39
parent021e7717e0dcdb5a18271b60446e2aa5edec5833 (diff)
Ensure sorted order of mirrors in status page matches with JSrelease_2012-04-25
We had one sorting order in the backend, and another once the JS sorting routine kicked in. Match them so we aren't doing more on the client-side on initial display than we have to. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--mirrors/utils.py5
-rw-r--r--mirrors/views.py10
2 files changed, 7 insertions, 8 deletions
diff --git a/mirrors/utils.py b/mirrors/utils.py
index 728c3040..32fa3587 100644
--- a/mirrors/utils.py
+++ b/mirrors/utils.py
@@ -43,8 +43,7 @@ def get_mirror_statuses(cutoff=default_cutoff):
last_sync=Max('logs__last_sync'),
last_check=Max('logs__check_time'),
duration_avg=Avg('logs__duration'),
- duration_stddev=StdDev('logs__duration')
- ).order_by('-last_sync', '-duration_avg')
+ duration_stddev=StdDev('logs__duration'))
# The Django ORM makes it really hard to get actual average delay in the
# above query, so run a seperate query for it and we will process the
@@ -112,7 +111,7 @@ def get_mirror_url_for_download(cutoff=default_cutoff):
Max('check_time'), Max('last_sync'))
if status_data['check_time__max'] is not None:
min_check_time = status_data['check_time__max'] - timedelta(minutes=5)
- min_sync_time = status_data['last_sync__max'] - timedelta(minutes=30)
+ min_sync_time = status_data['last_sync__max'] - timedelta(minutes=20)
best_logs = MirrorLog.objects.filter(is_success=True,
check_time__gte=min_check_time, last_sync__gte=min_sync_time,
url__mirror__public=True, url__mirror__active=True,
diff --git a/mirrors/views.py b/mirrors/views.py
index 6c08f712..c52656f7 100644
--- a/mirrors/views.py
+++ b/mirrors/views.py
@@ -1,4 +1,4 @@
-import datetime
+from datetime import timedelta
from operator import attrgetter, itemgetter
from django import forms
@@ -152,7 +152,7 @@ def mirror_details(request, name):
def status(request):
- bad_timedelta = datetime.timedelta(days=3)
+ bad_timedelta = timedelta(days=3)
status_info = get_mirror_statuses()
urls = status_info['urls']
@@ -167,8 +167,8 @@ def status(request):
context = status_info.copy()
context.update({
- 'good_urls': good_urls,
- 'bad_urls': bad_urls,
+ 'good_urls': sorted(good_urls, key=attrgetter('score')),
+ 'bad_urls': sorted(bad_urls, key=lambda u: u.delay or timedelta.max),
'error_logs': get_mirror_errors(),
})
return direct_to_template(request, 'mirrors/status.html', context)
@@ -181,7 +181,7 @@ class MirrorStatusJSONEncoder(DjangoJSONEncoder):
'delay', 'duration_avg', 'duration_stddev', 'score']
def default(self, obj):
- if isinstance(obj, datetime.timedelta):
+ if isinstance(obj, timedelta):
# always returned as integer seconds
return obj.days * 24 * 3600 + obj.seconds
if hasattr(obj, '__iter__'):