Coverage for gws-app/gws/plugin/qgis/finder.py: 0%

20 statements  

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

1"""Finder for QGIS project layers.""" 

2 

3from typing import Optional 

4 

5import gws 

6import gws.base.model 

7import gws.base.search 

8import gws.base.ows.client 

9import gws.config.util 

10import gws.gis.source 

11 

12from . import provider 

13 

14 

15@gws.ext.config.finder('qgis') 

16class Config(gws.base.search.finder.Config): 

17 """Search in QGIS project layers via QGIS Server.""" 

18 

19 provider: Optional[provider.Config] 

20 """QGIS project to search.""" 

21 sourceLayers: Optional[gws.gis.source.LayerFilter] 

22 """Source layers to search.""" 

23 

24 

25@gws.ext.object.finder('qgis') 

26class Object(gws.base.ows.client.finder.Object): 

27 """Finder that queries QGIS project layers with GetFeatureInfo.""" 

28 

29 supportsGeometrySearch = True 

30 provider: provider.Object 

31 """QGIS provider.""" 

32 

33 def configure_provider(self): 

34 return gws.config.util.configure_provider_for(self, provider.Object) 

35 

36 def can_run(self, search, user): 

37 return ( 

38 super().can_run(search, user) 

39 and bool(search.shape) 

40 and search.shape.type == gws.GeometryType.point)