Fix schema, standardize to 'Sync Server' as a key for now

Handled system wide disabling in integrate_new
This commit is contained in:
Petr Kalis 2020-12-10 19:02:00 +01:00
parent 8db280d2b2
commit 29763581e9
6 changed files with 71 additions and 30 deletions

View file

@ -1,4 +1,4 @@
from .sync_server import SyncServer
from pype.modules.sync_server.sync_server import SyncServer
def tray_init(tray_widget, main_widget):

View file

@ -1,4 +1,8 @@
from pype.api import get_project_settings, get_system_settings, Logger
from pype.api import (
get_project_settings,
get_system_settings,
Logger,
get_current_project_settings)
import threading
import asyncio
@ -92,20 +96,11 @@ class SyncServer():
self.connection = AvalonMongoDB()
try:
module_presets = get_system_settings().\
get("modules").get("Sync Server")
if SyncServer.is_enabled(True):
self.presets = self.get_synced_presets()
self.set_active_sites(self.presets)
if not module_presets:
raise ValueError("No system setting for sync.")
if not module_presets.get("enabled"):
log.info("Sync server disabled system wide.")
return
self.presets = self.get_synced_presets()
self.set_active_sites(self.presets)
self.sync_server_thread = SyncServerThread(self)
self.sync_server_thread = SyncServerThread(self)
except ValueError:
log.info("No system setting for sync. Not syncing.")
except KeyError:
@ -115,6 +110,57 @@ class SyncServer():
"no syncing possible").
format(str(self.presets)), exc_info=True)
@staticmethod
def is_enabled(raise_error=False):
""""
Returns true if synchronization in globally enabled by settings
raise_error (bool): if missing settings should result in
exception
"""
module_presets = get_system_settings(). \
get("modules").get("Sync Server")
if not module_presets:
if raise_error:
raise ValueError("No system setting for sync.")
log.info("No system setting for sync.")
return False
if not module_presets.get("enabled"):
log.info("Sync server disabled system wide.")
return False
return True
@staticmethod
def get_sites_for_project(project_name=None):
"""
Checks if sync is enabled globally and on project.
In that case return local and remote site
Args:
project_name (str):
Returns:
(tuple): of strings, labels for (local_site, remote_site)
"""
if SyncServer.is_enabled(False):
if project_name:
settings = get_project_settings(project_name)
else:
settings = get_current_project_settings()
sync_server_presets = settings["global"]["Sync Server"]["config"]
if settings["global"]["Sync Server"]["enabled"]:
local_site = sync_server_presets.get("active_site",
"studio").strip()
remote_site = sync_server_presets.get("remote_site")
return local_site, remote_site
return 'studio', None
def get_synced_presets(self):
"""
Collects all projects which have enabled syncing and their settings
@ -142,9 +188,9 @@ class SyncServer():
empty if no settings or sync is disabled
"""
settings = get_project_settings(project_name)
sync_settings = settings.get("global")["sync_server"]
sync_settings = settings.get("global")["Sync Server"]
if not sync_settings:
log.info("No project setting for sync_server, not syncing.")
log.info("No project setting for Sync Server, not syncing.")
return {}
if sync_settings.get("enabled"):
return sync_settings

View file

@ -16,6 +16,7 @@ from avalon.vendor import filelink
import pype.api
from datetime import datetime
from pype.api import config
from pype.modules.sync_server import SyncServer
# this is needed until speedcopy for linux is fixed
if sys.platform == "win32":
@ -933,15 +934,9 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
remote_site = None
sync_server_presets = None
try:
settings = pype.api.get_current_project_settings()
sync_settings = settings["global"]["sync_server"]
if sync_settings["enabled"]:
sync_server_presets = sync_settings["config"]
local_site = sync_server_presets.get("active_site",
"studio").strip()
remote_site = sync_server_presets.get("remote_site")
except KeyError:
if SyncServer.is_enabled(raise_error=True):
local_site, remote_site = SyncServer.get_sites_for_project()
except ValueError:
log.debug(("There are not set presets for SyncServer."
" No credentials provided, no synching possible").
format(str(sync_server_presets)))

View file

@ -179,7 +179,7 @@
}
}
},
"sync_server": {
"Sync Server": {
"enabled": false,
"config": {
"local_id": "local_0",
@ -196,4 +196,4 @@
}
}
}
}
}

View file

@ -1,6 +1,6 @@
{
"type": "dict",
"key": "sync_server",
"key": "Sync Server",
"label": "Sync Server (currently unused)",
"collapsable": true,
"checkbox_key": "enabled",

View file

@ -100,7 +100,7 @@
]
}, {
"type": "dict",
"key": "sync_server",
"key": "Sync Server",
"label": "Sync Server",
"collapsable": true,
"checkbox_key": "enabled",