From 086f8d263390bf064f01e64a501fea015b8d5783 Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Wed, 10 May 2023 02:02:20 +0300 Subject: [PATCH 1/4] Bump libqfieldsync --- docker-qgis/libqfieldsync | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-qgis/libqfieldsync b/docker-qgis/libqfieldsync index 61b579cb0..a9c076197 160000 --- a/docker-qgis/libqfieldsync +++ b/docker-qgis/libqfieldsync @@ -1 +1 @@ -Subproject commit 61b579cb0e1a1adf08f0d040d1490883bfb5c7ba +Subproject commit a9c0761972d92418de08e06baafaff3521ca4cc2 From 44c71bfb83292fa9fde2869b296fd03e25c6929b Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Thu, 22 Jun 2023 01:41:18 +0300 Subject: [PATCH 2/4] Fix tests: Make PostGIS tables to have a primary key --- .../qfieldcloud/core/tests/test_packages.py | 20 ++++++++++++++----- .../core/tests/test_qfield_file.py | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docker-app/qfieldcloud/core/tests/test_packages.py b/docker-app/qfieldcloud/core/tests/test_packages.py index 8921b3699..6358df76d 100644 --- a/docker-app/qfieldcloud/core/tests/test_packages.py +++ b/docker-app/qfieldcloud/core/tests/test_packages.py @@ -191,7 +191,9 @@ def check_package( def test_list_files_for_qfield(self): cur = self.conn.cursor() - cur.execute("CREATE TABLE point (id integer, geometry geometry(point, 2056))") + cur.execute( + "CREATE TABLE point (id integer primary key, geometry geometry(point, 2056))" + ) self.conn.commit() cur.execute( "INSERT INTO point(id, geometry) VALUES(1, ST_GeomFromText('POINT(2725505 1121435)', 2056))" @@ -412,7 +414,9 @@ def test_needs_repackaging_without_online_vector(self): def test_needs_repackaging_with_online_vector(self): cur = self.conn.cursor() - cur.execute("CREATE TABLE point (id integer, geometry geometry(point, 2056))") + cur.execute( + "CREATE TABLE point (id integer primary key, geometry geometry(point, 2056))" + ) self.conn.commit() cur.execute( "INSERT INTO point(id, geometry) VALUES(1, ST_GeomFromText('POINT(2725505 1121435)', 2056))" @@ -443,7 +447,9 @@ def test_needs_repackaging_with_online_vector(self): def test_connects_via_pgservice(self): cur = self.conn.cursor() - cur.execute("CREATE TABLE point (id integer, geometry geometry(point, 2056))") + cur.execute( + "CREATE TABLE point (id integer primary key, geometry geometry(point, 2056))" + ) self.conn.commit() Secret.objects.create( @@ -503,7 +509,9 @@ def test_connects_via_pgservice(self): def test_has_online_vector_data(self): cur = self.conn.cursor() - cur.execute("CREATE TABLE point (id integer, geometry geometry(point, 2056))") + cur.execute( + "CREATE TABLE point (id integer primary key, geometry geometry(point, 2056))" + ) self.conn.commit() self.upload_files( @@ -629,7 +637,9 @@ def test_outdated_packaged_files_are_deleted(self): subscription.plan.save() cur = self.conn.cursor() - cur.execute("CREATE TABLE point (id integer, geometry geometry(point, 2056))") + cur.execute( + "CREATE TABLE point (id integer primary key, geometry geometry(point, 2056))" + ) self.conn.commit() cur.execute( "INSERT INTO point(id, geometry) VALUES(1, ST_GeomFromText('POINT(2725505 1121435)', 2056))" diff --git a/docker-app/qfieldcloud/core/tests/test_qfield_file.py b/docker-app/qfieldcloud/core/tests/test_qfield_file.py index ffb48ea38..1c189619f 100644 --- a/docker-app/qfieldcloud/core/tests/test_qfield_file.py +++ b/docker-app/qfieldcloud/core/tests/test_qfield_file.py @@ -91,7 +91,7 @@ def test_list_files_for_qfield(self): cur.execute( """ CREATE TABLE point ( - id integer, + id integer primary key, geometry geometry(point, 2056) ); """ From 86337a22f1f9de4baba4af1d5a907afeabed1f91 Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Wed, 5 Jul 2023 18:17:24 +0300 Subject: [PATCH 3/4] Layer data with `qfc_source_data_pk_name` and `qfs_unsupported_source_pk` --- docker-qgis/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker-qgis/utils.py b/docker-qgis/utils.py index 5b8e678ec..7be665ea7 100644 --- a/docker-qgis/utils.py +++ b/docker-qgis/utils.py @@ -595,6 +595,10 @@ def get_layers_data(project: QgsProject) -> Dict[str, Dict]: "QFieldSync/is_geometry_locked" ), "qfs_photo_naming": layer.customProperty("QFieldSync/photo_naming"), + "qfc_source_data_pk_name": layer_source.pk_attr_name, + "qfs_unsupported_source_pk": layer.customProperty( + "QFieldSync/unsupported_source_pk" + ), "is_valid": layer.isValid(), "datasource": layer.dataProvider().uri().uri() if layer.dataProvider() From 422d6a82f18b9d09e28854602a5fd8ff3b04338d Mon Sep 17 00:00:00 2001 From: Ivan Ivanov Date: Wed, 5 Jul 2023 18:18:11 +0300 Subject: [PATCH 4/4] Move the datasource value to be calculated before the dict --- docker-qgis/utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docker-qgis/utils.py b/docker-qgis/utils.py index 7be665ea7..a9a06a2cd 100644 --- a/docker-qgis/utils.py +++ b/docker-qgis/utils.py @@ -582,6 +582,11 @@ def get_layers_data(project: QgsProject) -> Dict[str, Dict]: error = layer.error() layer_id = layer.id() layer_source = LayerSource(layer) + datasource = None + + if layer.dataProvider(): + datasource = layer.dataProvider().uri().uri() + layers_by_id[layer_id] = { "id": layer_id, "name": layer.name(), @@ -600,9 +605,7 @@ def get_layers_data(project: QgsProject) -> Dict[str, Dict]: "QFieldSync/unsupported_source_pk" ), "is_valid": layer.isValid(), - "datasource": layer.dataProvider().uri().uri() - if layer.dataProvider() - else None, + "datasource": datasource, "type": layer.type(), "type_name": layer.type().name, "error_code": "no_error",