Coverage for gws-app/gws/plugin/select_tool/action.py: 0%
28 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +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 storage: Optional[gws.base.storage.Config]
16 """storage configuration"""
17 tolerance: Optional[gws.UomValueStr]
18 """click tolerance"""
21class Props(gws.base.action.Props):
22 storage: gws.base.storage.Props
23 tolerance: str
26class Object(gws.base.action.Object):
27 storage: Optional[gws.base.storage.Object]
28 tolerance: Optional[gws.UomValue]
30 def configure(self):
31 self.storage = self.create_child_if_configured(
32 gws.base.storage.Object, self.cfg('storage'), categoryName='Select')
33 self.tolerance = self.cfg('tolerance')
35 def props(self, user):
36 return gws.u.merge(
37 super().props(user),
38 storage=self.storage,
39 tolerance=gws.lib.uom.to_str(self.tolerance) if self.tolerance else None,
40 )
42 @gws.ext.command.api('selectStorage')
43 def handle_storage(self, req: gws.WebRequester, p: gws.base.storage.Request) -> gws.base.storage.Response:
44 if not self.storage:
45 raise gws.NotFoundError('no storage configured')
46 return self.storage.handle_request(req, p)