Compare commits

..

4 Commits

Author SHA1 Message Date
e1002b5315 Adapting place detail view 2020-09-12 11:42:31 +02:00
fed90d4f7b Refactoring osm map 2020-09-12 11:42:18 +02:00
dcfb329c5a Adapted template 2020-09-12 11:35:30 +02:00
b8a21a8baa Changed average_latlon 2020-09-12 11:34:49 +02:00
5 changed files with 32 additions and 17 deletions

View File

@ -92,8 +92,13 @@ class Place (models.Model):
tags = TaggableManager(blank=True)
def get_absolute_url(self):
return reverse('place_detail', kwargs={'pk': self.pk})
@classmethod
# Get center position of LP-geocoordinates.
def average_latlon(place_list):
def average_latlon(cls, place_list):
amount = len(place_list)
# Init fill values to prevent None
longitude = 0
@ -103,9 +108,9 @@ class Place (models.Model):
for place in place_list:
longitude += place.longitude
latitude += place.latitude
return (latitude / amount, longitude / amount)
return {'latitude':latitude / amount, 'longitude': longitude / amount}
return (latitude, longitude)
return {'latitude': latitude, 'longitude': longitude}
def __str__(self):
return self.name

View File

@ -11,20 +11,20 @@
}),
],
view: new ol.View({
center: ol.proj.fromLonLat([{{place_map_center|last}}, {{place_map_center|first}}]),
center: ol.proj.fromLonLat([{{config.map_center.longitude}}, {{config.map_center.latitude}}]),
zoom: 9
})
});
var vectorSource = new ol.source.Vector({
features: [
{% for place in place_list %}
{% for config.point in point_list %}
new ol.Feature({
geometry: new ol.geom.Point(
ol.proj.fromLonLat([{{place.longitude}},{{place.latitude}}])
ol.proj.fromLonLat([{{point.longitude}},{{point.latitude}}])
),
url: '{% url 'place_detail' pk=place.pk %}',
name: '{{place.name}}'
url: '{{point.get_absolute_url}}',
name: '{{point.name}}'
}),
{% endfor %}
]

View File

@ -43,7 +43,7 @@
<section class="LP-Section">
<h1 class="LP-Headline">Map-Links</h1>
{% include 'partials/osm_map.html' %}
{% include 'partials/osm_map.html' with config=map_config%}
<div class="LP-LinkList">
<ul class="LP-LinkList__Container">
<li class="LP-LinkList__Item"><a target="_blank" href="https://www.google.com/maps?q={{place.latitude}},{{place.longitude}}" class="LP-Link"><span class="LP-Text">Google Maps</span></a></li>

View File

@ -84,12 +84,20 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
place_list.append(place)
avg_latlon = Place.average_latlon(place_list)
self.assertEqual(avg_latlon[0], 5.5,
self.assertTrue('latitude' in avg_latlon,
msg='Expecting avg_latlon dict to have an \'latitude\' key'
)
self.assertTrue('longitude' in avg_latlon,
msg='Expecting avg_latlon dict to have an \'longitude\' key'
)
self.assertEqual(avg_latlon['latitude'], 5.5,
msg='%s: average latitude missmatch' % (
self.model_name
)
)
self.assertEqual(avg_latlon[1], 14.5,
self.assertEqual(avg_latlon['longitude'], 14.5,
msg='%s: average longitude missmatch' % (
self.model_name
)
@ -102,12 +110,12 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
'''
place = Place.objects.get(id=1)
avg_latlon = Place.average_latlon([place])
self.assertEqual(avg_latlon[0], place.latitude,
self.assertEqual(avg_latlon['latitude'], place.latitude,
msg='%s:(one place) average latitude missmatch' % (
self.model_name
)
)
self.assertEqual(avg_latlon[1], place.longitude,
self.assertEqual(avg_latlon['longitude'], place.longitude,
msg='%s: (one place) average longitude missmatch' % (
self.model_name
)
@ -119,12 +127,12 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
an empty list
'''
avg_latlon = Place.average_latlon([])
self.assertEqual(avg_latlon[0], 0,
self.assertEqual(avg_latlon['latitude'], 0,
msg='%s: (no places) average latitude missmatch' % (
self.model_name
)
)
self.assertEqual(avg_latlon[1], 0,
self.assertEqual(avg_latlon['longitude'], 0,
msg='%s: a(no places) verage longitude missmatch' % (
self.model_name
)

View File

@ -31,8 +31,10 @@ class PlaceDetailView(IsAuthenticated, View):
place = Place.objects.get(pk=pk)
context = {
'place': place,
'place_list': [ place ],
'place_map_center': [ place.latitude, place.longitude ],
'map_config': {
'point_list': [ place ],
'map_center': {'latitude': place.latitude, 'longitude': place.longitude},
},
'tagging_config': {
'all_tags': Tag.objects.all(),
'submit_form': TagSubmitForm(),