Coverage for gws-app/gws/plugin/select_tool/action.py: 0%
28 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
1"""Select action."""
3from typing import Optional
5import gws
6import gws.base.action
7import gws.base.web
8import gws.base.storage
9import gws.lib.uom
11gws.ext.new.action('select')
14class Config(gws.base.action.Config):
15 """Select action configuration."""
17 storage: Optional[gws.base.storage.Config]
18 """Storage configuration."""
19 tolerance: Optional[gws.UomValueStr]
20 """Click tolerance."""
23class Props(gws.base.action.Props):
24 storage: gws.base.storage.Props
25 tolerance: str
28class Object(gws.base.action.Object):
29 storage: Optional[gws.base.storage.Object]
30 tolerance: Optional[gws.UomValue]
32 def configure(self):
33 self.storage = self.create_child_if_configured(
34 gws.base.storage.Object, self.cfg('storage'), categoryName='Select')
35 self.tolerance = self.cfg('tolerance')
37 def props(self, user):
38 return gws.u.merge(
39 super().props(user),
40 storage=self.storage,
41 tolerance=gws.lib.uom.to_str(self.tolerance) if self.tolerance else None,
42 )
44 @gws.ext.command.api('selectStorage')
45 def handle_storage(self, req: gws.WebRequester, p: gws.base.storage.Request) -> gws.base.storage.Response:
46 if not self.storage:
47 raise gws.NotFoundError('no storage configured')
48 return self.storage.handle_request(req, p)