Make general mirror list view public

Hide some columns when not logged in because they aren't relevant for the
general public, but this will work nicely as a base page for all of our
known mirrors.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2010-09-23 18:15:00 -05:00
parent 46dec16346
commit 1c6099f4b2
5 changed files with 30 additions and 28 deletions

View File

@ -10,7 +10,6 @@
from main.models import Package, Todolist, TodolistPkg
from main.models import Arch, Repo
from main.models import UserProfile
from mirrors.models import Mirror
from packages.models import PackageRelation
from .utils import get_annotated_maintainers
@ -79,12 +78,6 @@ def change_profile(request):
form = ProfileForm(initial={'email': request.user.email})
return direct_to_template(request, 'devel/profile.html', {'form': form})
@login_required
def mirrorlist(request):
mirrors = Mirror.objects.select_related().order_by('tier', 'country')
return direct_to_template(request, 'devel/mirrorlist.html',
{'mirror_list': mirrors})
class NewUserForm(forms.ModelForm):
class Meta:
model = UserProfile

View File

@ -27,7 +27,8 @@ def __unicode__(self):
return self.name
def supported_protocols(self):
protocols = MirrorProtocol.objects.filter(urls__mirror=self).distinct()
protocols = MirrorProtocol.objects.filter(
urls__mirror=self).order_by('protocol').distinct()
return ", ".join([p.protocol for p in protocols])
class MirrorProtocol(models.Model):

View File

@ -70,6 +70,12 @@ def find_mirrors(request, countries=None, protocols=None, use_status=False):
},
mimetype='text/plain')
def mirrors(request):
mirrors = Mirror.objects.select_related().order_by('tier', 'country')
if not request.user.is_authenticated():
mirrors = mirrors.filter(public=True, active=True)
return direct_to_template(request, 'mirrors/mirrors.html',
{'mirror_list': mirrors})
def status(request):
bad_timedelta = datetime.timedelta(days=3)

View File

@ -3,38 +3,40 @@
{% block content %}
<div id="dev-mirrorlist" class="box">
<h2>Mirror List</h2>
<h2>Mirror Overview</h2>
<table class="results">
<thead>
<tr>
<th>Server</th>
<th>Tier</th>
<th>Country</th>
<th>Admin Email</th>
<th>Public</th>
<th>Active</th>
<th>ISOs</th>
<th>Protocols</th>
{% if user.is_authenticated %}
<th>Public</th>
<th>Active</th>
<th>Rsync IPs</th>
<th>Admin Email</th>
<th>Notes</th>
{% endif %}
</tr>
</thead>
<tbody>
{% for mirror in mirror_list %}
<tr class="{% cycle 'odd' 'even' %}">
<td>{{mirror.name}}</td>
<td>{{mirror.get_tier_display}}</td>
<td>{{mirror.country}}</td>
<td>{{mirror.admin_email}}</td>
<td>{{mirror.public|yesno}}</td>
<td>{{mirror.active|yesno}}</td>
<td>{{mirror.isos|yesno}}</td>
<td class="wrap">{{mirror.supported_protocols}}</td>
<td>{{mirror.rsync_ips.count}}</td>
<td class="wrap">{{mirror.notes}}</td>
</tr>
<tr class="{% cycle 'odd' 'even' %}">
<td>{{mirror.name}}</td>
<td>{{mirror.get_tier_display}}</td>
<td>{{mirror.country}}</td>
<td>{{mirror.isos|yesno}}</td>
<td class="wrap">{{mirror.supported_protocols}}</td>
{% if user.is_authenticated %}
<td>{{mirror.public|yesno}}</td>
<td>{{mirror.active|yesno}}</td>
<td class="wrap">{{mirror.rsync_ips.all|join:', '}}</td>
<td>{{mirror.admin_email}}</td>
<td class="wrap">{{mirror.notes|linebreaks}}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>

View File

@ -71,8 +71,8 @@
(r'^news/(?P<slug>[-\w]+)/delete/$', 'news.views.delete'),
(r'^news/$', 'news.views.news_list', {}, 'news-list'),
(r'^mirrors/$', 'devel.views.mirrorlist', {}, 'mirrors-list'),
(r'^mirrors/status/$', 'mirrors.views.status', {}, 'mirror-status'),
(r'^mirrors/$', 'mirrors.views.mirrors', {}, 'mirrors-list'),
(r'^mirrors/status/$', 'mirrors.views.status', {}, 'mirror-status'),
(r'^mirrorlist/$', 'mirrors.views.generate_mirrorlist', {}, 'mirrorlist'),
(r'^mirrorlist/all/$', 'mirrors.views.find_mirrors', {'countries': ['all']}),