summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-03 16:08:44 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-03 16:14:25 +0200
commit2ffea8264374e56f543dc34e318d113fec41397d (patch)
tree0f20a63a4eca671218b3a62a6dddeb505a6ffa8e /chimere/models.py
parentb7d3c863a71185f80eb899db907c2a656667be78 (diff)
downloadChimère-2ffea8264374e56f543dc34e318d113fec41397d.tar.bz2
Chimère-2ffea8264374e56f543dc34e318d113fec41397d.zip
JSON: prevent crash when geometry is not valid
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/chimere/models.py b/chimere/models.py
index 122d61f..0a2906c 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -706,7 +706,10 @@ class Marker(GeographicItem):
if categories_id and cat.id not in categories_id:
continue
items = copy.deepcopy(json_tpl)
- items['geometry'] = json.loads(self.point.geojson)
+ try:
+ items['geometry'] = json.loads(self.point.geojson)
+ except json.JSONDecodeError:
+ continue
items['properties'].update({
'pk':self.id,
'name':self.name,
@@ -1190,8 +1193,12 @@ class Route(GeographicItem):
'''
if '#' not in color:
color = '#' + color
+ try:
+ geom = json.loads(self.route.geojson)
+ except json.JSONDecodeError:
+ return json.dumps('{}')
attributes = {"type":"Feature",
- "geometry":json.loads(self.route.geojson),
+ "geometry": geom,
"properties":{"pk":self.id, "name":self.name,
"color":color}}
return json.dumps(attributes)
@@ -1289,7 +1296,11 @@ class AggregatedRoute(models.Model):
'''
if '#' not in color:
color = '#' + color
- attributes = {'color':color, 'geometry':json.loads(self.route.geojson),
+ try:
+ geom = json.loads(self.route.geojson)
+ except json.JSONDecodeError:
+ return json.dumps('{}')
+ attributes = {'color':color, 'geometry': geom,
'type':"Feature", "properties":{"pk": self.id,
"name": u'Aggregated route',}}
return json.dumps(attributes)