fix editor up a bit
This commit is contained in:
parent
b1336abd62
commit
142e307fc3
3 changed files with 11 additions and 4 deletions
|
@ -69,7 +69,7 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
|
|||
@staticmethod
|
||||
def _get_level_geometries(level):
|
||||
buildings = level.buildings.all()
|
||||
buildings_geom = unary_union([building.geometry for building in buildings])
|
||||
buildings_geom = unary_union([building.geometry.wrapped_geom for building in buildings])
|
||||
spaces = {space.pk: space for space in level.spaces.all()}
|
||||
holes_geom = []
|
||||
for space in spaces.values():
|
||||
|
@ -77,9 +77,9 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
|
|||
space.geometry = space.geometry.difference(buildings_geom)
|
||||
columns = [column.geometry for column in space.columns.all()]
|
||||
if columns:
|
||||
columns_geom = unary_union([column.geometry for column in space.columns.all()])
|
||||
columns_geom = unary_union([column.geometry.wrapped_geom for column in space.columns.all()])
|
||||
space.geometry = space.geometry.difference(columns_geom)
|
||||
holes = [hole.geometry for hole in space.holes.all()]
|
||||
holes = [hole.geometry.wrapped_geom for hole in space.holes.all()]
|
||||
if holes:
|
||||
space_holes_geom = unary_union(holes)
|
||||
holes_geom.append(space_holes_geom.intersection(space.geometry))
|
||||
|
|
|
@ -1111,6 +1111,7 @@ editor = {
|
|||
var form = geometry_field.closest('form');
|
||||
var options, mapitem_type = form.attr('data-new');
|
||||
var geometry_value = geometry_field.val();
|
||||
if (geometry_value === 'null') geometry_value = '';
|
||||
if (geometry_value) {
|
||||
editor._creating_type = null;
|
||||
if (editor._editing_layer !== null) {
|
||||
|
|
|
@ -56,7 +56,7 @@ class GeometryField(models.JSONField):
|
|||
if value is None or value == '':
|
||||
return None
|
||||
try:
|
||||
geometry = shape(json.loads(value))
|
||||
geometry = shape(value)
|
||||
except Exception:
|
||||
raise ValidationError(_('Invalid GeoJSON.'))
|
||||
self._validate_geomtype(geometry)
|
||||
|
@ -67,6 +67,9 @@ class GeometryField(models.JSONField):
|
|||
self._validate_geomtype(geometry)
|
||||
return geometry
|
||||
|
||||
def validate(self, value, model_instance):
|
||||
super().validate(mapping(value), model_instance)
|
||||
|
||||
@cached_property
|
||||
def classes(self):
|
||||
return {
|
||||
|
@ -101,6 +104,9 @@ class GeometryField(models.JSONField):
|
|||
|
||||
return format_geojson(mapping(value), rounded=False) if as_json else value
|
||||
|
||||
def get_db_prep_value(self, value, connection, prepared=False):
|
||||
return super().get_db_prep_value(mapping(value), connection, prepared=prepared)
|
||||
|
||||
def get_prep_value(self, value):
|
||||
if value is None:
|
||||
return None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue