From 96462ea8677d884e4e56ac12be7a01bded272342 Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Fri, 3 Nov 2023 20:31:43 +0200 Subject: [PATCH 1/2] Actually set the bad layer handler on project --- docker-qgis/entrypoint.py | 3 +++ docker-qgis/libqfieldsync | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docker-qgis/entrypoint.py b/docker-qgis/entrypoint.py index 37bc18ddb..dc9c10436 100755 --- a/docker-qgis/entrypoint.py +++ b/docker-qgis/entrypoint.py @@ -11,6 +11,7 @@ from libqfieldsync.offline_converter import ExportType, OfflineConverter from libqfieldsync.project import ProjectConfiguration from libqfieldsync.utils.file_utils import get_project_in_folder +from libqfieldsync.utils.qgis import set_bad_layer_handler from qfieldcloud.qgis.utils import ( Step, StepOutput, @@ -44,6 +45,8 @@ def _call_qfieldsync_packager(project_filename: Path, package_dir: Path) -> str: if not project.read(str(project_filename)): raise Exception(f"Unable to open file with QGIS: {project_filename}") + set_bad_layer_handler(project) + layers = project.mapLayers() project_config = ProjectConfiguration(project) vl_extent_wkt = QgsRectangle() diff --git a/docker-qgis/libqfieldsync b/docker-qgis/libqfieldsync index f599ce3ee..0d3bc7a9a 160000 --- a/docker-qgis/libqfieldsync +++ b/docker-qgis/libqfieldsync @@ -1 +1 @@ -Subproject commit f599ce3eee0e6150556310ccc2ffae79c15f47f1 +Subproject commit 0d3bc7a9ada81529938a168015666cde3a2ed344 From 269c01556b605556c7aa7fdce6a2adb0e2fdb187 Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Fri, 3 Nov 2023 20:32:56 +0200 Subject: [PATCH 2/2] Show localized layers as invalid with `localized_dataprovider` error Before they were just regular `invalid_dataprovider` errors that was misleading. --- docker-qgis/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-qgis/utils.py b/docker-qgis/utils.py index e7cc9fcab..760af53bb 100644 --- a/docker-qgis/utils.py +++ b/docker-qgis/utils.py @@ -654,6 +654,7 @@ def get_layers_data(project: QgsProject) -> dict[str, dict]: "QFieldSync/unsupported_source_pk" ), "is_valid": layer.isValid(), + "is_localized": layer_source.is_localized_path, "datasource": datasource, "type": layer.type(), "type_name": layer.type().name, @@ -678,7 +679,10 @@ def get_layers_data(project: QgsProject) -> dict[str, dict]: # there might be another reason why the layer is not valid, other than the data provider layers_by_id[layer_id]["error_code"] = "invalid_layer" else: - layers_by_id[layer_id]["error_code"] = "invalid_dataprovider" + if layer_source.is_localized_path: + layers_by_id[layer_id]["error_code"] = "localized_dataprovider" + else: + layers_by_id[layer_id]["error_code"] = "invalid_dataprovider" layers_by_id[layer_id]["provider_error_summary"] = ( data_provider_error.summary()