From bc476b34ac4add406133a708f39fe2e9dc11bbe5 Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Tue, 28 Nov 2023 14:47:51 +0200 Subject: [PATCH] update check for offline layers --- Mergin/validation.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/Mergin/validation.py b/Mergin/validation.py index 752bbfa..0853a6c 100644 --- a/Mergin/validation.py +++ b/Mergin/validation.py @@ -194,20 +194,19 @@ def check_offline(self): """Check if there are layers that might not be available when offline""" w = MultipleLayersWarning(Warning.NOT_FOR_OFFLINE) for lid, layer in self.layers.items(): - try: - dp_name = layer.dataProvider().name() - except AttributeError: - # might be vector tiles - no provider name - if layer.type() == QgsMapLayerType.VectorTileLayer: - if "type=mbtiles" not in layer.source() and "type=vtpk" not in layer.source(): - w.items.append(layer.name()) - if dp_name in QGIS_NET_PROVIDERS + QGIS_DB_PROVIDERS: - if "type=mbtiles" not in layer.source(): + # special check for vector tile layers because in QGIS < 3.22 they may not have data provider assigned + if layer.type() == QgsMapLayerType.VectorTileLayer: + # mbtiles/vtpk are always local files + if "type=mbtiles" not in layer.source() and "type=vtpk" not in layer.source(): w.items.append(layer.name()) - else: - if layer.type() == QgsMapLayerType.VectorTileLayer: - if "type=mbtiles" not in layer.source() and "type=vtpk" not in layer.source(): - w.items.append(layer.name()) + continue + + dp_name = layer.dataProvider().name() + if dp_name in QGIS_NET_PROVIDERS + QGIS_DB_PROVIDERS: + # raster tiles in mbtiles are always local files + if dp_name == "wms" and "type=mbtiles" in layer.source(): + continue + w.items.append(layer.name()) if w.items: self.issues.append(w)