diff options
author | Dan McGee <dan@archlinux.org> | 2012-04-17 09:11:18 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-09-30 13:11:08 -0500 |
commit | b551a19bf07f127fcf474f4d2a1df0fc4b90d08b (patch) | |
tree | c1fb4305c037d10bcca3839f31156542703e625c | |
parent | e4f6f87de6409b20e14f59967a831979c9871aef (diff) | |
download | archweb-b551a19bf07f127fcf474f4d2a1df0fc4b90d08b.tar.gz archweb-b551a19bf07f127fcf474f4d2a1df0fc4b90d08b.zip |
WIP: location related stuff
-rw-r--r-- | mirrors/admin.py | 11 | ||||
-rw-r--r-- | mirrors/urls.py | 1 | ||||
-rw-r--r-- | mirrors/views.py | 14 | ||||
-rw-r--r-- | visualize/urls.py | 2 | ||||
-rw-r--r-- | visualize/views.py | 14 |
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: |