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
|
@staticmethod
|
||||||
def _get_level_geometries(level):
|
def _get_level_geometries(level):
|
||||||
buildings = level.buildings.all()
|
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()}
|
spaces = {space.pk: space for space in level.spaces.all()}
|
||||||
holes_geom = []
|
holes_geom = []
|
||||||
for space in spaces.values():
|
for space in spaces.values():
|
||||||
|
@ -77,9 +77,9 @@ class EditorViewSet(EditorViewSetMixin, ViewSet):
|
||||||
space.geometry = space.geometry.difference(buildings_geom)
|
space.geometry = space.geometry.difference(buildings_geom)
|
||||||
columns = [column.geometry for column in space.columns.all()]
|
columns = [column.geometry for column in space.columns.all()]
|
||||||
if columns:
|
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)
|
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:
|
if holes:
|
||||||
space_holes_geom = unary_union(holes)
|
space_holes_geom = unary_union(holes)
|
||||||
holes_geom.append(space_holes_geom.intersection(space.geometry))
|
holes_geom.append(space_holes_geom.intersection(space.geometry))
|
||||||
|
|
|
@ -1111,6 +1111,7 @@ editor = {
|
||||||
var form = geometry_field.closest('form');
|
var form = geometry_field.closest('form');
|
||||||
var options, mapitem_type = form.attr('data-new');
|
var options, mapitem_type = form.attr('data-new');
|
||||||
var geometry_value = geometry_field.val();
|
var geometry_value = geometry_field.val();
|
||||||
|
if (geometry_value === 'null') geometry_value = '';
|
||||||
if (geometry_value) {
|
if (geometry_value) {
|
||||||
editor._creating_type = null;
|
editor._creating_type = null;
|
||||||
if (editor._editing_layer !== null) {
|
if (editor._editing_layer !== null) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ class GeometryField(models.JSONField):
|
||||||
if value is None or value == '':
|
if value is None or value == '':
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
geometry = shape(json.loads(value))
|
geometry = shape(value)
|
||||||
except Exception:
|
except Exception:
|
||||||
raise ValidationError(_('Invalid GeoJSON.'))
|
raise ValidationError(_('Invalid GeoJSON.'))
|
||||||
self._validate_geomtype(geometry)
|
self._validate_geomtype(geometry)
|
||||||
|
@ -67,6 +67,9 @@ class GeometryField(models.JSONField):
|
||||||
self._validate_geomtype(geometry)
|
self._validate_geomtype(geometry)
|
||||||
return geometry
|
return geometry
|
||||||
|
|
||||||
|
def validate(self, value, model_instance):
|
||||||
|
super().validate(mapping(value), model_instance)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def classes(self):
|
def classes(self):
|
||||||
return {
|
return {
|
||||||
|
@ -101,6 +104,9 @@ class GeometryField(models.JSONField):
|
||||||
|
|
||||||
return format_geojson(mapping(value), rounded=False) if as_json else value
|
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):
|
def get_prep_value(self, value):
|
||||||
if value is None:
|
if value is None:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue