Skip to content

Commit 499d531

Browse files
authored
Merge pull request #154 from MerginMaps/project_id_in_metadata
Added project ID to the metadata.
2 parents 590050a + e18a62d commit 499d531

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

mergin/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,9 +359,10 @@ def create_project_and_push(self, project_name, directory, is_public=False, name
359359
namespace = self.username()
360360
self.create_project(project_name, is_public, namespace)
361361
if directory:
362-
mp = MerginProject(directory)
363362
full_project_name = "{}/{}".format(namespace, project_name)
364-
mp.metadata = {"name": full_project_name, "version": "v0", "files": []}
363+
project_info = self.project_info(full_project_name)
364+
mp = MerginProject(directory)
365+
mp.metadata = {"name": full_project_name, "version": "v0", "files": [], "project_id": project_info["id"]}
365366
if mp.inspect_files():
366367
self.push_project(directory)
367368

mergin/client_pull.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,12 @@ def download_project_finalize(job):
217217

218218
# final update of project metadata
219219
# TODO: why not exact copy of project info JSON ?
220-
job.mp.metadata = {"name": job.project_path, "version": job.version, "files": job.project_info["files"]}
220+
job.mp.metadata = {
221+
"name": job.project_path,
222+
"version": job.version,
223+
"project_id": job.project_info["id"],
224+
"files": job.project_info["files"],
225+
}
221226

222227

223228
def download_project_cancel(job):
@@ -610,6 +615,7 @@ def pull_project_finalize(job):
610615
job.mp.metadata = {
611616
"name": job.project_path,
612617
"version": job.version if job.version else "v0", # for new projects server version is ""
618+
"project_id": job.project_info["id"],
613619
"files": job.project_info["files"],
614620
}
615621

mergin/client_push.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ def push_project_finalize(job):
283283
job.mp.metadata = {
284284
"name": job.project_path,
285285
"version": job.server_resp["version"],
286+
"project_id": job.server_resp["id"],
286287
"files": job.server_resp["files"],
287288
}
288289
try:

mergin/test/test_client.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,13 @@ def test_create_remote_project_from_local(mc):
118118

119119
# create remote project
120120
mc.create_project_and_push(test_project, directory=project_dir)
121-
121+
source_mp = MerginProject(project_dir)
122122
# check basic metadata about created project
123123
project_info = mc.project_info(project)
124124
assert project_info["version"] == "v1"
125125
assert project_info["name"] == test_project
126126
assert project_info["namespace"] == API_USER
127+
assert project_info["id"] == source_mp.metadata["project_id"]
127128

128129
versions = mc.project_versions(project)
129130
assert len(versions) == 1
@@ -191,6 +192,7 @@ def test_push_pull_changes(mc):
191192
f_remote_checksum = next((f["checksum"] for f in project_info["files"] if f["path"] == f_updated), None)
192193
assert generate_checksum(os.path.join(project_dir, f_updated)) == f_remote_checksum
193194
mp = MerginProject(project_dir)
195+
assert project_info["id"] == mp.metadata["project_id"]
194196
assert len(project_info["files"]) == len(mp.inspect_files())
195197
project_versions = mc.project_versions(project)
196198
assert len(project_versions) == 2
@@ -330,6 +332,7 @@ def test_sync_diff(mc):
330332
# check project after push
331333
project_info = mc.project_info(project)
332334
assert project_info["version"] == "v3"
335+
assert project_info["id"] == mp.metadata["project_id"]
333336
f_remote = next((f for f in project_info["files"] if f["path"] == f_updated), None)
334337
assert next((f for f in project_info["files"] if f["path"] == "renamed.gpkg"), None)
335338
assert not next((f for f in project_info["files"] if f["path"] == f_removed), None)
@@ -863,6 +866,7 @@ def test_get_versions_with_file_changes(mc):
863866

864867
project_info = mc.project_info(project)
865868
assert project_info["version"] == "v4"
869+
assert project_info["id"] == mp.metadata["project_id"]
866870
file_history = mc.project_file_history_info(project, f_updated)
867871

868872
with pytest.raises(ClientError) as e:
@@ -897,6 +901,7 @@ def test_download_file(mc):
897901

898902
project_info = mc.project_info(project)
899903
assert project_info["version"] == "v5"
904+
assert project_info["id"] == mp.metadata["project_id"]
900905

901906
# Versioned file should have the following content at versions 2-4
902907
expected_content = ("inserted_1_A.gpkg", "inserted_1_A_mod.gpkg", "inserted_1_B.gpkg")
@@ -926,6 +931,7 @@ def test_download_diffs(mc):
926931

927932
project_info = mc.project_info(project)
928933
assert project_info["version"] == "v4"
934+
assert project_info["id"] == mp.metadata["project_id"]
929935

930936
# Download diffs of updated file between versions 1 and 2
931937
mc.get_file_diff(project_dir, f_updated, diff_file, "v1", "v2")

0 commit comments

Comments
 (0)