mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
Fix schema, standardize to 'Sync Server' as a key for now
Handled system wide disabling in integrate_new
This commit is contained in:
parent
8db280d2b2
commit
29763581e9
6 changed files with 71 additions and 30 deletions
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"sync_server": {
|
||||
"Sync Server": {
|
||||
"enabled": false,
|
||||
"config": {
|
||||
"local_id": "local_0",
|
||||
|
|
@ -196,4 +196,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"type": "dict",
|
||||
"key": "sync_server",
|
||||
"key": "Sync Server",
|
||||
"label": "Sync Server (currently unused)",
|
||||
"collapsable": true,
|
||||
"checkbox_key": "enabled",
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
]
|
||||
}, {
|
||||
"type": "dict",
|
||||
"key": "sync_server",
|
||||
"key": "Sync Server",
|
||||
"label": "Sync Server",
|
||||
"collapsable": true,
|
||||
"checkbox_key": "enabled",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue