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

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 storage: Optional[gws.base.storage.Config] 

16 """storage configuration""" 

17 tolerance: Optional[gws.UomValueStr] 

18 """click tolerance""" 

19 

20 

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

22 storage: gws.base.storage.Props 

23 tolerance: str 

24 

25 

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

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

28 tolerance: Optional[gws.UomValue] 

29 

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

34 

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 ) 

41 

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)