summaryrefslogtreecommitdiffstats
path: root/mirrors
diff options
context:
space:
mode:
Diffstat (limited to 'mirrors')
-rw-r--r--mirrors/models.py6
-rw-r--r--mirrors/views.py11
2 files changed, 17 insertions, 0 deletions
diff --git a/mirrors/models.py b/mirrors/models.py
index d8d1a3e..8542330 100644
--- a/mirrors/models.py
+++ b/mirrors/models.py
@@ -31,6 +31,12 @@ class Mirror(models.Model):
urls__mirror=self).order_by('protocol').distinct()
return ", ".join([p.protocol for p in protocols])
+ def downstream(self):
+ return Mirror.objects.filter(upstream=self).order_by('name')
+
+ def get_absolute_url(self):
+ return '/mirrors/%s/' % self.name
+
class MirrorProtocol(models.Model):
protocol = models.CharField(max_length=10, unique=True)
def __unicode__(self):
diff --git a/mirrors/views.py b/mirrors/views.py
index 9380f81..34385a9 100644
--- a/mirrors/views.py
+++ b/mirrors/views.py
@@ -1,6 +1,8 @@
from django import forms
from django.db.models import Avg, Count, Max, Min, StdDev
from django.db.models import Q
+from django.http import Http404
+from django.shortcuts import get_object_or_404
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.simple import direct_to_template
@@ -77,6 +79,15 @@ def mirrors(request):
return direct_to_template(request, 'mirrors/mirrors.html',
{'mirror_list': mirrors})
+def mirror_details(request, name):
+ mirror = get_object_or_404(Mirror, name=name)
+ if not request.user.is_authenticated() and \
+ (not mirror.public or not mirror.active):
+ # TODO: maybe this should be 403? but that would leak existence
+ raise Http404
+ return direct_to_template(request, 'mirrors/mirror_details.html',
+ {'mirror': mirror})
+
def status(request):
bad_timedelta = datetime.timedelta(days=3)
status_info = get_mirror_statuses()