Source code for gws.ext.action.edit

"""Backend for vector edit operations."""

import gws
import gws.common.action
import gws.gis.feature
import gws.tools.json2
import gws.web.error

import gws.types as t


[docs]class Config(t.WithTypeAndAccess): """Feature edit action""" pass
[docs]class EditParams(t.Params): layerUid: str features: t.List[t.FeatureProps]
[docs]class EditResponse(t.Response): features: t.List[t.FeatureProps]
[docs]class Object(gws.common.action.Object):
[docs] def api_add_features(self, req: t.IRequest, p: EditParams) -> EditResponse: """Add features to the layer""" return self._handle('insert', req, p)
[docs] def api_delete_features(self, req: t.IRequest, p: EditParams) -> EditResponse: """Delete features from the layer""" return self._handle('delete', req, p)
[docs] def api_update_features(self, req: t.IRequest, p: EditParams) -> EditResponse: """Update features on the layer""" return self._handle('update', req, p)
def _handle(self, op, req, p: EditParams): layer: t.ILayer = req.require('gws.ext.layer', p.layerUid) if not layer.edit_access(req.user): raise gws.web.error.Forbidden() features = layer.edit_operation(op, p.features) return EditResponse(features=[f.apply_templates().apply_data_model().props for f in features])