remove tofile, fromfile and similar

This commit is contained in:
Laura Klünder 2017-04-28 11:14:01 +02:00
parent 72716154b9
commit 582f7df7ca
6 changed files with 1 additions and 361 deletions

View file

@ -4,7 +4,7 @@ from django.db import models
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _
from shapely.geometry import CAP_STYLE, JOIN_STYLE, Point
from shapely.geometry.geo import mapping, shape
from shapely.geometry.geo import mapping
from c3nav.mapdata.fields import GeometryField
from c3nav.mapdata.models import Elevator
@ -33,19 +33,6 @@ class GeometryMapItem(MapItem, metaclass=GeometryMapItemMeta):
class Meta:
abstract = True
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'geometry' not in data:
raise ValueError('missing geometry.')
try:
kwargs['geometry'] = shape(data['geometry'])
except:
raise ValueError(_('Invalid GeoJSON.'))
return kwargs
def get_geojson_properties(self):
return OrderedDict((
('type', self.__class__.__name__.lower()),
@ -60,11 +47,6 @@ class GeometryMapItem(MapItem, metaclass=GeometryMapItemMeta):
('geometry', format_geojson(mapping(self.geometry), round=False)),
))
def tofile(self, form=None):
result = super().tofile()
result['geometry'] = format_geojson(mapping(self.geometry))
return result
def get_shadow_geojson(self):
return None
@ -81,27 +63,11 @@ class GeometryMapItemWithLevel(GeometryMapItem):
class Meta:
abstract = True
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'level' not in data:
raise ValueError('missing level.')
kwargs['level'] = data['level']
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['level'] = self.level.name
return result
def tofile(self, form=None):
result = super().tofile()
result['level'] = self.level.name
result.move_to_end('geometry')
return result
class DirectedLineGeometryMapItemWithLevel(GeometryMapItemWithLevel):
geomtype = 'polyline'
@ -197,26 +163,11 @@ class Escalator(GeometryMapItemWithLevel):
verbose_name_plural = _('Escalators')
default_related_name = 'escalators'
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'direction' not in data:
raise ValueError('missing direction.')
kwargs['direction'] = data['direction']
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['direction'] = 'up' if self.direction else 'down'
return result
def tofile(self, form=None):
result = super().tofile()
result['direction'] = self.direction
return result
class Stair(DirectedLineGeometryMapItemWithLevel):
"""
@ -242,27 +193,12 @@ class Obstacle(GeometryMapItemWithLevel):
verbose_name_plural = _('Obstacles')
default_related_name = 'obstacles'
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'crop_to_level' in data:
kwargs['crop_to_level'] = data['crop_to_level']
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
if self.crop_to_level is not None:
result['crop_to_level'] = self.crop_to_level.name
return result
def tofile(self, form=None):
result = super().tofile()
if self.crop_to_level is not None:
result['crop_to_level'] = self.crop_to_level.name
return result
class LineObstacle(GeometryMapItemWithLevel):
"""
@ -285,26 +221,11 @@ class LineObstacle(GeometryMapItemWithLevel):
result['original_geometry'] = original_geometry
return result
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'width' not in data:
raise ValueError('missing width.')
kwargs['width'] = data['width']
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['width'] = float(self.width)
return result
def tofile(self, form=None):
result = super().tofile()
result['width'] = float(self.width)
return result
class LevelConnector(GeometryMapItem):
"""
@ -318,32 +239,11 @@ class LevelConnector(GeometryMapItem):
verbose_name_plural = _('Level Connectors')
default_related_name = 'levelconnectors'
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'levels' not in data:
raise ValueError('missing levels.')
levels = data.get('levels', None)
if not isinstance(levels, list):
raise TypeError('levels has to be a list')
if len(levels) < 2:
raise ValueError('a level connector needs at least two levels')
kwargs['levels'] = levels
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['levels'] = tuple(self.levels.all().order_by('name').values_list('name', flat=True))
return result
def tofile(self, form=None):
result = super().tofile()
result['levels'] = sorted(self.levels.all().order_by('name').values_list('name', flat=True))
result.move_to_end('geometry')
return result
class Door(GeometryMapItemWithLevel):
"""
@ -391,31 +291,6 @@ class ElevatorLevel(GeometryMapItemWithLevel):
result['button'] = self.button
return result
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'elevator' not in data:
raise ValueError('missing elevator.')
kwargs['elevator'] = data['elevator']
if 'button' not in data:
raise ValueError('missing button.')
kwargs['button'] = data['button']
if 'override_altitude' in data:
kwargs['override_altitude'] = data['override_altitude']
return kwargs
def tofile(self, form=None):
result = super().tofile()
result['elevator'] = self.elevator.name
result['button'] = self.button
if self.override_altitude is not None:
result['override_altitude'] = float(self.override_altitude)
return result
@cached_property
def altitude(self):
if self.override_altitude is not None: