|
@@ -7,6 +7,10 @@ from django.utils import timezone
|
|
|
from django.core.urlresolvers import reverse
|
|
|
from django.utils.html import format_html
|
|
|
from django.core.mail import mail_managers
|
|
|
+from django.conf.urls import url
|
|
|
+from django.template.response import TemplateResponse
|
|
|
+from django.core.serializers import serialize
|
|
|
+from django.http import HttpResponse
|
|
|
|
|
|
from adhesions.models import Adhesion
|
|
|
from .models import Service, ServiceType, IPPrefix, IPResource, Route, ServiceAllocation, Antenna, AntennaAllocation, Allocation
|
|
@@ -235,6 +239,27 @@ class AntennaAdmin(geo_admin.OSMGeoAdmin):
|
|
|
AntennaPrefixFilter,
|
|
|
)
|
|
|
|
|
|
+ def view_on_site(self, obj):
|
|
|
+ return '/admin/services/antenna/map.html'
|
|
|
+
|
|
|
+ def get_urls(self):
|
|
|
+ urls = super().get_urls()
|
|
|
+ from djgeojson.views import GeoJSONLayerView
|
|
|
+ my_urls = [
|
|
|
+ url(r'^map/$', self.admin_site.admin_view(self.map_view, cacheable=True), name='antenna-map'),
|
|
|
+ url(r'^map/data.json$', self.admin_site.admin_view(GeoJSONLayerView.as_view(model=Antenna, geometry_field='position')), name='antenna-map-data'),
|
|
|
+ ]
|
|
|
+ return my_urls + urls
|
|
|
+
|
|
|
+ def map_view(self, request):
|
|
|
+ return TemplateResponse(request, 'services/antenna_map.html', {
|
|
|
+ 'json_url': reverse('admin:antenna-map-data'),
|
|
|
+ })
|
|
|
+
|
|
|
+ def map_data_view(self, request):
|
|
|
+ geojson = serialize('geojson', Antenna.objects.all(), geometry_field='point', fields=('position',))
|
|
|
+ return HttpResponse(geojson, content_type='application/json')
|
|
|
+
|
|
|
|
|
|
admin.site.register(ServiceType, ServiceTypeAdmin)
|
|
|
admin.site.register(Service, ServiceAdmin)
|