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

1"""Select action.""" 

2 

3from typing import Optional 

4 

5import gws 

6import gws.base.action 

7import gws.base.web 

8import gws.base.storage 

9import gws.lib.uom 

10 

11gws.ext.new.action('select') 

12 

13 

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

15 """Select action configuration.""" 

16 

17 storage: Optional[gws.base.storage.Config] 

18 """Storage configuration.""" 

19 tolerance: Optional[gws.UomValueStr] 

20 """Click tolerance.""" 

21 

22 

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

24 storage: gws.base.storage.Props 

25 tolerance: str 

26 

27 

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

29 storage: Optional[gws.base.storage.Object] 

30 tolerance: Optional[gws.UomValue] 

31 

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') 

36 

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 ) 

43 

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)