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

View File

@ -11,20 +11,20 @@
}), }),
], ],
view: new ol.View({ 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 zoom: 9
}) })
}); });
var vectorSource = new ol.source.Vector({ var vectorSource = new ol.source.Vector({
features: [ features: [
{% for place in place_list %} {% for config.point in point_list %}
new ol.Feature({ new ol.Feature({
geometry: new ol.geom.Point( 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 %}', url: '{{point.get_absolute_url}}',
name: '{{place.name}}' name: '{{point.name}}'
}), }),
{% endfor %} {% endfor %}
] ]

View File

@ -43,7 +43,7 @@
<section class="LP-Section"> <section class="LP-Section">
<h1 class="LP-Headline">Map-Links</h1> <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"> <div class="LP-LinkList">
<ul class="LP-LinkList__Container"> <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> <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) place_list.append(place)
avg_latlon = Place.average_latlon(place_list) 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' % ( msg='%s: average latitude missmatch' % (
self.model_name self.model_name
) )
) )
self.assertEqual(avg_latlon[1], 14.5, self.assertEqual(avg_latlon['longitude'], 14.5,
msg='%s: average longitude missmatch' % ( msg='%s: average longitude missmatch' % (
self.model_name self.model_name
) )
@ -102,12 +110,12 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
''' '''
place = Place.objects.get(id=1) place = Place.objects.get(id=1)
avg_latlon = Place.average_latlon([place]) 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' % ( msg='%s:(one place) average latitude missmatch' % (
self.model_name self.model_name
) )
) )
self.assertEqual(avg_latlon[1], place.longitude, self.assertEqual(avg_latlon['longitude'], place.longitude,
msg='%s: (one place) average longitude missmatch' % ( msg='%s: (one place) average longitude missmatch' % (
self.model_name self.model_name
) )
@ -119,12 +127,12 @@ class PlaceTestCase(SubmittableTestCase, TestCase):
an empty list an empty list
''' '''
avg_latlon = Place.average_latlon([]) avg_latlon = Place.average_latlon([])
self.assertEqual(avg_latlon[0], 0, self.assertEqual(avg_latlon['latitude'], 0,
msg='%s: (no places) average latitude missmatch' % ( msg='%s: (no places) average latitude missmatch' % (
self.model_name self.model_name
) )
) )
self.assertEqual(avg_latlon[1], 0, self.assertEqual(avg_latlon['longitude'], 0,
msg='%s: a(no places) verage longitude missmatch' % ( msg='%s: a(no places) verage longitude missmatch' % (
self.model_name self.model_name
) )

View File

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