From ecece25814042d262bb7a102b9cbe48fc9c87db4 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 1 Dec 2013 11:42:25 -0600 Subject: Show all mirror status data to authorized users Regardless of whether the mirror URL is active or not, we often have data we can show the end user, especially if mirror admins care to see the data we've been gathering. Signed-off-by: Dan McGee --- mirrors/views.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'mirrors/views.py') diff --git a/mirrors/views.py b/mirrors/views.py index ec056696..9e05e5fc 100644 --- a/mirrors/views.py +++ b/mirrors/views.py @@ -153,15 +153,20 @@ def mirrors(request): def mirror_details(request, name): mirror = get_object_or_404(Mirror, name=name) - if not request.user.is_authenticated() and \ + authorized = request.user.is_authenticated() + if not authorized and \ (not mirror.public or not mirror.active): raise Http404 error_cutoff = timedelta(days=7) - status_info = get_mirror_statuses(mirror_id=mirror.id) + status_info = get_mirror_statuses(mirror_id=mirror.id, + show_all=authorized) checked_urls = {url for url in status_info['urls'] \ if url.mirror_id == mirror.id} - all_urls = set(mirror.urls.filter(active=True).select_related('protocol')) + all_urls = mirror.urls.select_related('protocol') + if not authorized: + all_urls = all_urls.filter(active=True) + all_urls = set(all_urls) # Add dummy data for URLs that we haven't checked recently other_urls = all_urls.difference(checked_urls) for url in other_urls: @@ -170,7 +175,8 @@ def mirror_details(request, name): setattr(url, attr, None) all_urls = sorted(checked_urls.union(other_urls), key=attrgetter('url')) - error_logs = get_mirror_errors(mirror_id=mirror.id, cutoff=error_cutoff) + error_logs = get_mirror_errors(mirror_id=mirror.id, cutoff=error_cutoff, + show_all=True) context = { 'mirror': mirror, @@ -181,8 +187,10 @@ def mirror_details(request, name): return render(request, 'mirrors/mirror_details.html', context) def mirror_details_json(request, name): + authorized = request.user.is_authenticated() mirror = get_object_or_404(Mirror, name=name) - status_info = get_mirror_statuses(mirror_id=mirror.id) + status_info = get_mirror_statuses(mirror_id=mirror.id, + show_all=authorized) data = status_info.copy() data['version'] = 3 to_json = json.dumps(data, ensure_ascii=False, -- cgit v1.2.3-2-g168b From 79aef280ddf0c704fd40d0077822a8ff7548437e Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 15 Dec 2013 13:22:41 -0600 Subject: Add mirror URL details page This will allow those that care about mirrors to zoom into URL-level details for each mirror and examine the individual check results. Signed-off-by: Dan McGee --- mirrors/views.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mirrors/views.py') diff --git a/mirrors/views.py b/mirrors/views.py index 9e05e5fc..b2e75b25 100644 --- a/mirrors/views.py +++ b/mirrors/views.py @@ -186,6 +186,7 @@ def mirror_details(request, name): } return render(request, 'mirrors/mirror_details.html', context) + def mirror_details_json(request, name): authorized = request.user.is_authenticated() mirror = get_object_or_404(Mirror, name=name) @@ -199,6 +200,24 @@ def mirror_details_json(request, name): return response +def url_details(request, name, url_id): + url = get_object_or_404(MirrorUrl, id=url_id, mirror__name=name) + mirror = url.mirror + authorized = request.user.is_authenticated() + if not authorized and \ + (not mirror.public or not mirror.active or not url.active): + raise Http404 + error_cutoff = timedelta(days=7) + cutoff_time = now() - error_cutoff + logs = MirrorLog.objects.filter(url=url, check_time__gte=cutoff_time).order_by('-check_time') + + context = { + 'url': url, + 'logs': logs, + } + return render(request, 'mirrors/url_details.html', context) + + def status(request, tier=None): if tier is not None: tier = int(tier) -- cgit v1.2.3-2-g168b From 77a45dc7bc6f0badb45ec043e85f1b542c52792e Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 15 Dec 2013 13:33:50 -0600 Subject: Use select_related() in new mirror URL details view Signed-off-by: Dan McGee --- mirrors/views.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'mirrors/views.py') diff --git a/mirrors/views.py b/mirrors/views.py index b2e75b25..34336165 100644 --- a/mirrors/views.py +++ b/mirrors/views.py @@ -201,7 +201,8 @@ def mirror_details_json(request, name): def url_details(request, name, url_id): - url = get_object_or_404(MirrorUrl, id=url_id, mirror__name=name) + url = get_object_or_404(MirrorUrl.objects.select_related(), + id=url_id, mirror__name=name) mirror = url.mirror authorized = request.user.is_authenticated() if not authorized and \ @@ -209,7 +210,8 @@ def url_details(request, name, url_id): raise Http404 error_cutoff = timedelta(days=7) cutoff_time = now() - error_cutoff - logs = MirrorLog.objects.filter(url=url, check_time__gte=cutoff_time).order_by('-check_time') + logs = MirrorLog.objects.select_related('location').filter( + url=url, check_time__gte=cutoff_time).order_by('-check_time') context = { 'url': url, -- cgit v1.2.3-2-g168b