team-3/src/c3nav/mapdata/fields.py

33 lines
827 B
Python
Raw Normal View History

import json
from django.db import models
from shapely.geometry import mapping, shape
2016-09-27 16:18:18 +02:00
from c3nav.mapdata.utils import sort_geojson
2016-09-20 16:13:47 +02:00
class GeometryField(models.TextField):
def from_db_value(self, value, expression, connection, context):
if value is None:
return value
return shape(json.loads(value))
def to_python(self, value):
return shape(json.loads(value))
def get_prep_value(self, value):
2016-09-20 16:13:47 +02:00
return json.dumps(sort_geojson(mapping(value)))
class JSONField(models.TextField):
def from_db_value(self, value, expression, connection, context):
if value is None:
return value
return json.loads(value)
def to_python(self, value):
return json.loads(value)
def get_prep_value(self, value):
return json.dumps(value)