diff options
Diffstat (limited to 'mirrors')
-rw-r--r-- | mirrors/models.py | 6 | ||||
-rw-r--r-- | mirrors/views.py | 11 |
2 files changed, 17 insertions, 0 deletions
diff --git a/mirrors/models.py b/mirrors/models.py index d8d1a3e5..85423303 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 9380f810..34385a98 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() |