summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-04-17 09:11:18 -0500
committerDan McGee <dan@archlinux.org>2012-09-30 13:11:08 -0500
commitb551a19bf07f127fcf474f4d2a1df0fc4b90d08b (patch)
treec1fb4305c037d10bcca3839f31156542703e625c
parente4f6f87de6409b20e14f59967a831979c9871aef (diff)
downloadarchweb-b551a19bf07f127fcf474f4d2a1df0fc4b90d08b.tar.gz
archweb-b551a19bf07f127fcf474f4d2a1df0fc4b90d08b.zip
WIP: location related stuff
-rw-r--r--mirrors/admin.py11
-rw-r--r--mirrors/urls.py1
-rw-r--r--mirrors/views.py14
-rw-r--r--visualize/urls.py2
-rw-r--r--visualize/views.py14
5 files changed, 40 insertions, 2 deletions
diff --git a/mirrors/admin.py b/mirrors/admin.py
index 65fff368..d6cf7ee3 100644
--- a/mirrors/admin.py
+++ b/mirrors/admin.py
@@ -2,9 +2,10 @@ import re
from urlparse import urlparse, urlunsplit
from django import forms
-from django.contrib import admin
+#from django.contrib import admin
+from django.contrib.gis import admin
-from .models import Mirror, MirrorProtocol, MirrorUrl, MirrorRsync
+from .models import Mirror, MirrorProtocol, MirrorUrl, MirrorRsync, MirrorLog
class MirrorUrlForm(forms.ModelForm):
class Meta:
@@ -75,7 +76,13 @@ class MirrorProtocolAdmin(admin.ModelAdmin):
list_display = ('protocol', 'is_download', 'default')
list_filter = ('is_download', 'default')
+class MirrorUrlAdmin(admin.GeoModelAdmin):
+ pass
+
+
admin.site.register(Mirror, MirrorAdmin)
admin.site.register(MirrorProtocol, MirrorProtocolAdmin)
+admin.site.register(MirrorUrl, MirrorUrlAdmin)
+admin.site.register(MirrorLog)
# vim: set ts=4 sw=4 et:
diff --git a/mirrors/urls.py b/mirrors/urls.py
index bb4eb969..465a5f40 100644
--- a/mirrors/urls.py
+++ b/mirrors/urls.py
@@ -5,6 +5,7 @@ urlpatterns = patterns('mirrors.views',
(r'^status/$', 'status', {}, 'mirror-status'),
(r'^status/json/$', 'status_json', {}, 'mirror-status-json'),
(r'^status/tier/(?P<tier>\d+)/$', 'status', {}, 'mirror-status-tier'),
+ (r'^map/$', 'google_map', {}, 'mirror-map'),
(r'^(?P<name>[\.\-\w]+)/$', 'mirror_details'),
)
diff --git a/mirrors/views.py b/mirrors/views.py
index 11719223..51073511 100644
--- a/mirrors/views.py
+++ b/mirrors/views.py
@@ -253,4 +253,18 @@ def status_json(request):
response = HttpResponse(to_json, mimetype='application/json')
return response
+
+from django.conf import settings
+from django.shortcuts import render_to_response
+from django.contrib.gis.maps.google.gmap import GoogleMap
+from django.contrib.gis.maps.google.overlays import GMarker, GEvent
+
+def google_map(request):
+ urls_locations = MirrorUrl.objects.filter(mirror__active=True,
+ location__isnull=False).values_list('mirror__name', 'location').distinct()
+ markers = [GMarker(url[1], title=url[0]) for url in urls_locations]
+ google = GoogleMap(center=(0,0), zoom=1, markers=markers,
+ key=settings.GOOGLE_MAPS_API_PASSWORD)
+ return render_to_response('mirrors/map.html', {'google': google,})
+
# vim: set ts=4 sw=4 et:
diff --git a/visualize/urls.py b/visualize/urls.py
index 907f6a22..a8d46320 100644
--- a/visualize/urls.py
+++ b/visualize/urls.py
@@ -5,6 +5,8 @@ urlpatterns = patterns('visualize.views',
(r'^by_arch/$', 'by_arch', {}, 'visualize-byarch'),
(r'^by_repo/$', 'by_repo', {}, 'visualize-byrepo'),
(r'^pgp_keys/$', 'pgp_keys', {}, 'visualize-pgp_keys'),
+ (r'^mirror_locations/$', 'mirror_locations',
+ {}, 'visualize-mirror_locations'),
)
# vim: set ts=4 sw=4 et:
diff --git a/visualize/views.py b/visualize/views.py
index 44e60472..3741917e 100644
--- a/visualize/views.py
+++ b/visualize/views.py
@@ -9,6 +9,7 @@ from django.views.decorators.cache import cache_page
from main.models import Package, Arch, Repo
from devel.models import MasterKey, PGPSignature
+from mirrors.models import MirrorUrl
def index(request):
return render(request, 'visualize/index.html')
@@ -112,4 +113,17 @@ def pgp_keys(request):
to_json = json.dumps(data, ensure_ascii=False)
return HttpResponse(to_json, mimetype='application/json')
+
+def mirror_locations(request):
+ locations = MirrorUrl.objects.filter(mirror__active=True,
+ mirror__public=True, location__isnull=False).values_list(
+ 'mirror__name', 'mirror__tier', 'location').order_by().distinct()
+
+ data = [{'name': t[0], 'tier': t[1], 'latitude': t[2].y, 'longitude': t[2].x}
+ for t in locations]
+ data = {'mirrors': data}
+
+ to_json = simplejson.dumps(data, ensure_ascii=False)
+ return HttpResponse(to_json, mimetype='application/json')
+
# vim: set ts=4 sw=4 et: