Merge pull request #4231 from pypeclub/bugfix/OP-4512_Anatomy-local-drive-site-roots-ignored

SiteSync: anatomy local drive site roots ignored
This commit is contained in:
Petr Kalis 2022-12-22 14:23:44 +01:00 committed by GitHub
commit 8ee073fd73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 15 deletions

View file

@ -22,7 +22,7 @@ class DropboxHandler(AbstractProvider):
)
return
if not self.presets["enabled"]:
if not self.presets.get("enabled"):
self.log.debug("Sync Server: Site {} not enabled for {}.".
format(site_name, project_name))
return

View file

@ -74,7 +74,7 @@ class GDriveHandler(AbstractProvider):
)
return
if not self.presets["enabled"]:
if not self.presets.get("enabled"):
self.log.debug(
"Sync Server: Site {} not enabled for {}.".format(
site_name, project_name

View file

@ -5,6 +5,7 @@ import threading
import time
from openpype.lib import Logger
from openpype.lib.local_settings import get_local_site_id
from openpype.pipeline import Anatomy
from .abstract_provider import AbstractProvider
@ -220,6 +221,6 @@ class LocalDriveHandler(AbstractProvider):
def _normalize_site_name(self, site_name):
"""Transform user id to 'local' for Local settings"""
if site_name != 'studio':
if site_name == get_local_site_id():
return 'local'
return site_name

View file

@ -72,7 +72,7 @@ class SFTPHandler(AbstractProvider):
Returns:
(boolean)
"""
return self.presets["enabled"] and self.conn is not None
return self.presets.get("enabled") and self.conn is not None
@classmethod
def get_system_settings_schema(cls):

View file

@ -1368,13 +1368,19 @@ class SyncServerModule(OpenPypeModule, ITrayModule):
"""
sync_sett = self.sync_system_settings
project_enabled = True
project_settings = None
if project_name:
project_enabled = project_name in self.get_enabled_projects()
project_settings = self.get_sync_project_setting(project_name)
sync_enabled = sync_sett["enabled"] and project_enabled
system_sites = {}
if sync_enabled:
for site, detail in sync_sett.get("sites", {}).items():
if project_settings:
site_settings = project_settings["sites"].get(site)
if site_settings:
detail.update(site_settings)
system_sites[site] = detail
system_sites.update(self._get_default_site_configs(sync_enabled,
@ -1396,14 +1402,22 @@ class SyncServerModule(OpenPypeModule, ITrayModule):
exclude_locals=True)
roots = {}
for root, config in anatomy_sett["roots"].items():
roots[root] = config[platform.system().lower()]
roots[root] = config
studio_config = {
'enabled': True,
'provider': 'local_drive',
"root": roots
}
all_sites = {self.DEFAULT_SITE: studio_config}
if sync_enabled:
all_sites[get_local_site_id()] = {'provider': 'local_drive'}
all_sites[get_local_site_id()] = {'enabled': True,
'provider': 'local_drive',
"root": roots}
# duplicate values for normalized local name
all_sites["local"] = {
'enabled': True,
'provider': 'local_drive',
"root": roots}
return all_sites
def get_provider_for_site(self, project_name=None, site=None):

View file

@ -24,6 +24,7 @@ from openpype.lib.path_templates import (
FormatObject,
)
from openpype.lib.log import Logger
from openpype.lib import get_local_site_id
log = Logger.get_logger(__name__)
@ -60,6 +61,10 @@ class BaseAnatomy(object):
project_name = project_doc["name"]
self.project_name = project_name
if site_name not in ["studio", "local", get_local_site_id()]:
raise RuntimeError("Anatomy could be created only for default "
"local sites not for {}".format(site_name))
self._site_name = site_name
self._data = self._prepare_anatomy_data(

View file

@ -248,6 +248,9 @@ class SitesWidget(QtWidgets.QWidget):
main_layout.addWidget(comboboxes_widget, 0)
main_layout.addWidget(content_widget, 1)
active_site_widget.value_changed.connect(self.refresh)
remote_site_widget.value_changed.connect(self.refresh)
self.active_site_widget = active_site_widget
self.remote_site_widget = remote_site_widget
@ -268,25 +271,29 @@ class SitesWidget(QtWidgets.QWidget):
self.modules_manager.modules_by_name["sync_server"]
)
# This is temporary modification
# - whole logic here should be in sync module's providers
site_names = sync_server_module.get_active_sites_from_settings(
self.project_settings["project_settings"].value
)
site_configs = sync_server_module.get_all_site_configs(
self._project_name)
roots_entity = (
self.project_settings[PROJECT_ANATOMY_KEY][LOCAL_ROOTS_KEY]
)
site_names = [self.active_site_widget.current_text(),
self.remote_site_widget.current_text()]
output = []
for site_name in site_names:
if not site_name:
continue
site_inputs = []
for root_name, path_entity in roots_entity.items():
platform_entity = path_entity[platform.system().lower()]
site_config = site_configs[site_name]
for root_name, path_entity in site_config.get("root", {}).items():
if not path_entity:
continue
platform_value = path_entity[platform.system().lower()]
site_inputs.append({
"label": root_name,
"key": root_name,
"value": platform_entity.value
"value": platform_value
})
output.append(
@ -436,6 +443,7 @@ class SitesWidget(QtWidgets.QWidget):
class _SiteCombobox(QtWidgets.QWidget):
input_label = None
value_changed = QtCore.Signal()
def __init__(self, modules_manager, project_settings, parent):
super(_SiteCombobox, self).__init__(parent)
@ -661,6 +669,7 @@ class _SiteCombobox(QtWidgets.QWidget):
self._set_local_settings_value(self.current_text())
self._update_style()
self.value_changed.emit()
def _set_local_settings_value(self, value):
raise NotImplementedError(