fix error 500 when trying to edit/create an arealocation in editor
This commit is contained in:
parent
9ea9a72bb2
commit
62d4132d60
7 changed files with 21 additions and 18 deletions
|
@ -131,7 +131,7 @@ def edit_mapitem(request, mapitem_type, name=None):
|
|||
mapitem.titles[language] = title
|
||||
|
||||
if not settings.DIRECT_EDITING:
|
||||
content = json_encode(mapitem.tofile())
|
||||
content = json_encode(mapitem.tofile(form=form))
|
||||
with translation.override('en'):
|
||||
commit_msg = '%s %s: %s' % (commit_type, mapitemtype._meta.verbose_name, mapitem.title)
|
||||
return render(request, 'editor/mapitem_success.html', {
|
||||
|
|
|
@ -49,7 +49,7 @@ class MapItem(models.Model, metaclass=MapItemMeta):
|
|||
kwargs = {}
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
return OrderedDict()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
|
|
@ -60,7 +60,7 @@ class GeometryMapItem(MapItem, metaclass=GeometryMapItemMeta):
|
|||
('geometry', format_geojson(mapping(self.geometry), round=False)),
|
||||
))
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['geometry'] = format_geojson(mapping(self.geometry))
|
||||
return result
|
||||
|
@ -96,7 +96,7 @@ class GeometryMapItemWithLevel(GeometryMapItem):
|
|||
result['level'] = self.level.name
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['level'] = self.level.name
|
||||
result.move_to_end('geometry')
|
||||
|
@ -200,7 +200,7 @@ class Escalator(GeometryMapItemWithLevel):
|
|||
result['direction'] = 'up' if self.direction else 'down'
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['direction'] = self.direction
|
||||
return result
|
||||
|
@ -265,7 +265,7 @@ class Obstacle(GeometryMapItemWithLevel):
|
|||
result['crop_to_level'] = self.crop_to_level.name
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
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
|
||||
|
@ -308,7 +308,7 @@ class LineObstacle(GeometryMapItemWithLevel):
|
|||
result['width'] = float(self.width)
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['width'] = float(self.width)
|
||||
return result
|
||||
|
@ -346,7 +346,7 @@ class LevelConnector(GeometryMapItem):
|
|||
result['levels'] = tuple(self.levels.all().order_by('name').values_list('name', flat=True))
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
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')
|
||||
|
@ -415,7 +415,7 @@ class ElevatorLevel(GeometryMapItemWithLevel):
|
|||
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['elevator'] = self.elevator.name
|
||||
result['button'] = self.button
|
||||
|
|
|
@ -65,7 +65,7 @@ class Level(MapItem):
|
|||
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['altitude'] = float(self.altitude)
|
||||
result['intermediate'] = self.intermediate
|
||||
|
|
|
@ -64,8 +64,8 @@ class LocationModelMixin(Location):
|
|||
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
result = super().tofile()
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile(form=form)
|
||||
result['titles'] = OrderedDict(sorted(self.titles.items()))
|
||||
result['can_search'] = self.can_search
|
||||
return result
|
||||
|
@ -140,7 +140,7 @@ class LocationGroup(LocationModelMixin, MapItem):
|
|||
result = super().get_geojson_properties()
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['compiled_room'] = self.compiled_room
|
||||
return result
|
||||
|
@ -269,9 +269,12 @@ class AreaLocation(LocationModelMixin, GeometryMapItemWithLevel):
|
|||
result = super().get_geojson_properties()
|
||||
return result
|
||||
|
||||
def tofile(self):
|
||||
result = super().tofile()
|
||||
result['groups'] = sorted(self.groups.all().order_by('name').values_list('name', flat=True))
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile(form=form)
|
||||
if form is not None:
|
||||
result['groups'] = sorted(group.name for group in form.cleaned_data['groups'])
|
||||
else:
|
||||
result['groups'] = sorted(self.groups.all().order_by('name').values_list('name', flat=True))
|
||||
result['location_type'] = self.location_type
|
||||
result['can_search'] = self.can_search
|
||||
result['can_describe'] = self.can_describe
|
||||
|
|
|
@ -83,7 +83,7 @@ class Package(models.Model):
|
|||
def tofilename(self):
|
||||
return 'package.json'
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
data = OrderedDict()
|
||||
data['name'] = self.name
|
||||
if self.home_repo is not None:
|
||||
|
|
|
@ -47,7 +47,7 @@ class Source(MapItem):
|
|||
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
def tofile(self, form=None):
|
||||
result = super().tofile()
|
||||
result['bounds'] = ((float(self.bottom), float(self.left)), (float(self.top), float(self.right)))
|
||||
return result
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue