Coverage for gws-app/gws/base/edit/action.py: 94%

36 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""Edit action.""" 

2 

3from typing import Optional, cast 

4 

5import gws 

6import gws.base.action 

7 

8from . import api, helper 

9 

10 

11@gws.ext.config.action('edit') 

12class Config(gws.base.action.Config): 

13 """Feature editing in the client.""" 

14 pass 

15 

16 

17@gws.ext.props.action('edit') 

18class Props(gws.base.action.Props): 

19 pass 

20 

21 

22@gws.ext.object.action('edit') 

23class Object(gws.base.action.Object): 

24 """Edit action. 

25 

26 Delegates all work to the ``edit`` helper. 

27 """ 

28 

29 h: helper.Object 

30 """The ``edit`` helper.""" 

31 

32 def configure(self): 

33 self.h = cast(helper.Object, self.root.app.helper('edit')) 

34 

35 @gws.ext.command.api('editGetModels') 

36 def api_get_models(self, req: gws.WebRequester, p: api.GetModelsRequest) -> api.GetModelsResponse: 

37 """Return the editable models of a project.""" 

38 return self.h.get_models_response(req, p, self.h.get_models(req, p)) 

39 

40 @gws.ext.command.api('editGetFeatures') 

41 def api_get_features(self, req: gws.WebRequester, p: api.GetFeaturesRequest) -> api.GetFeaturesResponse: 

42 """Return features of editable models.""" 

43 return self.h.get_features_response(req, p, self.h.get_features(req, p)) 

44 

45 @gws.ext.command.api('editGetRelatableFeatures') 

46 def api_get_relatable_features(self, req: gws.WebRequester, p: api.GetRelatableFeaturesRequest) -> api.GetRelatableFeaturesResponse: 

47 """Return features that can be linked in a related field.""" 

48 return self.h.get_relatable_features_response(req, p, self.h.get_relatable_features(req, p)) 

49 

50 @gws.ext.command.api('editGetFeature') 

51 def api_get_feature(self, req: gws.WebRequester, p: api.GetFeatureRequest) -> api.GetFeatureResponse: 

52 """Return a single feature for the edit form.""" 

53 return self.h.get_feature_response(req, p, self.h.get_feature(req, p)) 

54 

55 @gws.ext.command.api('editInitFeature') 

56 def api_init_feature(self, req: gws.WebRequester, p: api.InitFeatureRequest) -> api.InitFeatureResponse: 

57 """Return a new feature with initial values, without saving it.""" 

58 return self.h.init_feature_response(req, p, self.h.init_feature(req, p)) 

59 

60 @gws.ext.command.api('editWriteFeature') 

61 def api_write_feature(self, req: gws.WebRequester, p: api.WriteFeatureRequest) -> api.WriteFeatureResponse: 

62 """Validate and save a new or existing feature.""" 

63 return self.h.write_feature_response(req, p, self.h.write_feature(req, p)) 

64 

65 @gws.ext.command.api('editDeleteFeature') 

66 def api_delete_feature(self, req: gws.WebRequester, p: api.DeleteFeatureRequest) -> api.DeleteFeatureResponse: 

67 """Delete a feature.""" 

68 return self.h.delete_feature_response(req, p, self.h.delete_feature(req, p))