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) ); """ 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 diff --git a/docker-qgis/utils.py b/docker-qgis/utils.py index 137574071..d12684f5b 100644 --- a/docker-qgis/utils.py +++ b/docker-qgis/utils.py @@ -603,6 +603,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(), @@ -616,10 +621,12 @@ 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() - else None, + "datasource": datasource, "type": layer.type(), "type_name": layer.type().name, "error_code": "no_error",