Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Use new site sync entity in settings and modify their loading #2230

34 changes: 15 additions & 19 deletions openpype/modules/default_modules/sync_server/providers/dropbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,19 @@ def __init__(self, project_name, site_name, tree=None, presets=None):
)
return

provider_presets = self.presets.get(self.CODE)
if not provider_presets:
msg = "Sync Server: No provider presets for {}".format(self.CODE)
log.info(msg)
return

token = self.presets[self.CODE].get("token", "")
token = self.presets.get("token", "")
if not token:
msg = "Sync Server: No access token for dropbox provider"
log.info(msg)
return

team_folder_name = self.presets[self.CODE].get("team_folder_name", "")
team_folder_name = self.presets.get("team_folder_name", "")
if not team_folder_name:
msg = "Sync Server: No team folder name for dropbox provider"
log.info(msg)
return

acting_as_member = self.presets[self.CODE].get("acting_as_member", "")
acting_as_member = self.presets.get("acting_as_member", "")
if not acting_as_member:
msg = (
"Sync Server: No acting member for dropbox provider"
Expand All @@ -51,13 +45,15 @@ def __init__(self, project_name, site_name, tree=None, presets=None):
return

self.dbx = None
try:
self.dbx = self._get_service(
token, acting_as_member, team_folder_name
)
except Exception as e:
log.info("Could not establish dropbox object: {}".format(e))
return

if self.presets["enabled"]:
try:
self.dbx = self._get_service(
token, acting_as_member, team_folder_name
)
except Exception as e:
log.info("Could not establish dropbox object: {}".format(e))
return

super(AbstractProvider, self).__init__()

Expand Down Expand Up @@ -106,7 +102,7 @@ def get_project_settings_schema(cls):
"type": "dict-roots",
"object_type": {
"type": "path",
"multiplatform": True,
"multiplatform": False,
"multipath": False
}
}
Expand Down Expand Up @@ -169,7 +165,7 @@ def is_active(self):
Returns:
(boolean)
"""
return self.dbx is not None
return self.presets["enabled"] and self.dbx is not None

@classmethod
def get_configurable_items(cls):
Expand Down Expand Up @@ -393,7 +389,7 @@ def get_roots_config(self, anatomy=None):
{"root": {"root_ONE": "value", "root_TWO":"value}}
Format is importing for usage of python's format ** approach
"""
return self.presets['root']
return self.presets['roots']

def resolve_path(self, path, root_config=None, anatomy=None):
"""
Expand Down
30 changes: 14 additions & 16 deletions openpype/modules/default_modules/sync_server/providers/gdrive.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,32 +73,28 @@ def __init__(self, project_name, site_name, tree=None, presets=None):
format(site_name))
return

provider_presets = self.presets.get(self.CODE)
if not provider_presets:
msg = "Sync Server: No provider presets for {}".format(self.CODE)
log.info(msg)
return

cred_path = self.presets[self.CODE].get("credentials_url", {}).\
cred_path = self.presets.get("credentials_url", {}).\
get(platform.system().lower()) or ''
if not os.path.exists(cred_path):
msg = "Sync Server: No credentials for gdrive provider " + \
"for '{}' on path '{}'!".format(site_name, cred_path)
log.info(msg)
return

self.service = self._get_gd_service(cred_path)
self.service = None
if self.presets["enabled"]:
self.service = self._get_gd_service(cred_path)

self._tree = tree
self.active = True
self._tree = tree
self.active = True

def is_active(self):
"""
Returns True if provider is activated, eg. has working credentials.
Returns:
(boolean)
"""
return self.service is not None
return self.presets["enabled"] and self.service is not None

@classmethod
def get_system_settings_schema(cls):
Expand All @@ -125,9 +121,11 @@ def get_project_settings_schema(cls):
editable = [
# credentials could be overriden on Project or User level
{
'key': "credentials_url",
'label': "Credentials url",
'type': 'text'
"type": "path",
"key": "credentials_url",
"label": "Credentials url",
"multiplatform": True,
"placeholder": "Credentials url"
},
# roots could be overriden only on Project leve, User cannot
{
Expand All @@ -136,7 +134,7 @@ def get_project_settings_schema(cls):
"type": "dict-roots",
"object_type": {
"type": "path",
"multiplatform": True,
"multiplatform": False,
"multipath": False
}
}
Expand Down Expand Up @@ -176,7 +174,7 @@ def get_roots_config(self, anatomy=None):
Format is importing for usage of python's format ** approach
"""
# GDrive roots cannot be locally overridden
return self.presets['root']
return self.presets['roots']

def get_tree(self):
"""
Expand Down
32 changes: 13 additions & 19 deletions openpype/modules/default_modules/sync_server/providers/sftp.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,13 @@ def __init__(self, project_name, site_name, tree=None, presets=None):
format(site_name))
return

provider_presets = self.presets.get(self.CODE)
if not provider_presets:
msg = "Sync Server: No provider presets for {}".format(self.CODE)
log.warning(msg)
return

# store to instance for reconnect
self.sftp_host = provider_presets["sftp_host"]
self.sftp_port = provider_presets["sftp_port"]
self.sftp_user = provider_presets["sftp_user"]
self.sftp_pass = provider_presets["sftp_pass"]
self.sftp_key = provider_presets["sftp_key"]
self.sftp_key_pass = provider_presets["sftp_key_pass"]
self.sftp_host = presets["sftp_host"]
self.sftp_port = presets["sftp_port"]
self.sftp_user = presets["sftp_user"]
self.sftp_pass = presets["sftp_pass"]
self.sftp_key = presets["sftp_key"]
self.sftp_key_pass = presets["sftp_key_pass"]

self._tree = None

Expand All @@ -77,9 +71,7 @@ def is_active(self):
Returns:
(boolean)
"""
return self.presets.get(self.CODE) and \
self.presets[self.CODE].get("sftp_host") and \
self.conn is not None
return self.presets["enabled"] and self.conn is not None

@classmethod
def get_system_settings_schema(cls):
Expand Down Expand Up @@ -129,7 +121,8 @@ def get_project_settings_schema(cls):
{
'key': "sftp_key",
'label': "SFTP user ssh key",
'type': 'path'
'type': 'path',
"multiplatform": True
},
{
'key': "sftp_key_pass",
Expand All @@ -143,7 +136,7 @@ def get_project_settings_schema(cls):
"type": "dict-roots",
"object_type": {
"type": "path",
"multiplatform": True,
"multiplatform": False,
"multipath": False
}
}
Expand Down Expand Up @@ -175,7 +168,8 @@ def get_local_settings_schema(cls):
{
'key': "sftp_key",
'label': "SFTP user ssh key",
'type': 'path'
'type': 'path',
"multiplatform": True
},
{
'key': "sftp_key_pass",
Expand All @@ -198,7 +192,7 @@ def get_roots_config(self, anatomy=None):
Format is importing for usage of python's format ** approach
"""
# roots cannot be locally overridden
return self.presets['root']
return self.presets['roots']

def get_tree(self):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ async def download(module, collection, file, representation, provider_name,
True
)

module.handle_alternate_site(collection, representation, remote_site_name,
module.handle_alternate_site(collection, representation, local_site,
file["_id"], file_id)

return file_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,8 @@ def handle_alternate_site(self, collection, representation, processed_site,
alt_site, representation["_id"]))
self._add_site(collection, query,
[representation], elem,
site_name, file_id=file_id, force=True)
alt_site, file_id=file_id, force=True)

""" End of Public API """

def get_local_file_path(self, collection, site_name, file_path):
Expand Down
5 changes: 3 additions & 2 deletions openpype/plugins/publish/integrate_new.py
Original file line number Diff line number Diff line change
Expand Up @@ -1120,9 +1120,10 @@ def _add_alternative_sites(self,

for site_name, site_info in conf_sites.items():
alt_sites = set(site_info.get("alternative_sites", []))
for added_site in already_attached_sites.keys():
already_attached_keys = list(already_attached_sites.keys())
for added_site in already_attached_keys:
if added_site in alt_sites:
if site_name in already_attached_sites.keys():
if site_name in already_attached_keys:
continue
meta = {"name": site_name}
real_created = already_attached_sites[added_site]
Expand Down
2 changes: 1 addition & 1 deletion openpype/settings/defaults/project_settings/global.json
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@
},
"project_folder_structure": "{\"__project_root__\": {\"prod\": {}, \"resources\": {\"footage\": {\"plates\": {}, \"offline\": {}}, \"audio\": {}, \"art_dept\": {}}, \"editorial\": {}, \"assets[ftrack.Library]\": {\"characters[ftrack]\": {}, \"locations[ftrack]\": {}}, \"shots[ftrack.Sequence]\": {\"scripts\": {}, \"editorial[ftrack.Folder]\": {}}}}",
"sync_server": {
"enabled": true,
"enabled": false,
"config": {
"retry_cnt": "3",
"loop_delay": "60",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,100 +48,11 @@
]
},
{
"type": "dict-modifiable",
"type": "sync-server-sites",
"collapsible": true,
"key": "sites",
"label": "Sites",
"collapsible_key": false,
"object_type": {
"type": "dict",
"children": [
{
"type": "dict",
"key": "gdrive",
"label": "Google Drive",
"collapsible": true,
"children": [
{
"type": "path",
"key": "credentials_url",
"label": "Credentials url",
"multiplatform": true
}
]
},
{
"type": "dict",
"key": "dropbox",
"label": "Dropbox",
"collapsible": true,
"children": [
{
"type": "text",
"key": "token",
"label": "Access Token"
},
{
"type": "text",
"key": "team_folder_name",
"label": "Team Folder Name"
},
{
"type": "text",
"key": "acting_as_member",
"label": "Acting As Member"
}
]
},
{
"type": "dict",
"key": "sftp",
"label": "SFTP",
"collapsible": true,
"children": [
{
"type": "text",
"key": "sftp_host",
"label": "SFTP host"
},
{
"type": "number",
"key": "sftp_port",
"label": "SFTP port"
},
{
"type": "text",
"key": "sftp_user",
"label": "SFTP user"
},
{
"type": "text",
"key": "sftp_pass",
"label": "SFTP pass"
},
{
"type": "path",
"key": "sftp_key",
"label": "SFTP user ssh key",
"multiplatform": true
},
{
"type": "text",
"key": "sftp_key_pass",
"label": "SFTP user ssh key password"
}
]
},
{
"type": "dict-modifiable",
"key": "root",
"label": "Roots",
"collapsable": false,
"collapsable_key": false,
"object_type": "text"
}
]
}
"collapsible_key": false
}
]
}