Skip to content

Commit 13b8ccb

Browse files
committed
Initial dirty version of push v2
1 parent e618827 commit 13b8ccb

File tree

5 files changed

+382
-124
lines changed

5 files changed

+382
-124
lines changed

mergin/client.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
download_diffs_finalize,
4141
)
4242
from .client_pull import pull_project_async, pull_project_wait, pull_project_finalize
43-
from .client_push import push_project_async, push_project_wait, push_project_finalize
43+
from .client_push import push_project_async, push_project_wait, push_project_finalize, UploadChunksCache
4444
from .utils import DateTimeEncoder, get_versions_with_file_changes, int_version, is_version_acceptable
4545
from .version import __version__
4646

@@ -106,6 +106,8 @@ def __init__(
106106
self._user_info = None
107107
self._server_type = None
108108
self._server_version = None
109+
self._feature_flags = {}
110+
self.upload_chunks_cache = UploadChunksCache()
109111
self.client_version = "Python-client/" + __version__
110112
if plugin_version is not None: # this could be e.g. "Plugin/2020.1 QGIS/3.14"
111113
self.client_version += " " + plugin_version
@@ -362,8 +364,7 @@ def server_type(self):
362364
"""
363365
if not self._server_type:
364366
try:
365-
resp = self.get("/config", validate_auth=False)
366-
config = json.load(resp)
367+
config = self.server_config()
367368
if config["server_type"] == "ce":
368369
self._server_type = ServerType.CE
369370
elif config["server_type"] == "ee":
@@ -384,14 +385,26 @@ def server_version(self):
384385
"""
385386
if self._server_version is None:
386387
try:
387-
resp = self.get("/config", validate_auth=False)
388-
config = json.load(resp)
388+
config = self.server_config()
389389
self._server_version = config["version"]
390390
except (ClientError, KeyError):
391391
self._server_version = ""
392392

393393
return self._server_version
394394

395+
def server_features(self):
396+
"""
397+
Returns feature flags of the server.
398+
"""
399+
if self._feature_flags:
400+
return self._feature_flags
401+
config = self.server_config()
402+
return {
403+
"v2_push_enabled": config.get("v2_push_enabled", False)
404+
and is_version_acceptable(self.server_version(), "2025.6.2"),
405+
"v2_pull_enabled": config.get("v2_pull_enabled", False),
406+
}
407+
395408
def workspaces_list(self):
396409
"""
397410
Find all available workspaces

0 commit comments

Comments
 (0)