From 5d9125cf53d0eb0be7241438ae9691f0ea2d8a3b Mon Sep 17 00:00:00 2001 From: studiowildcard Date: Fri, 4 Mar 2022 00:44:05 -0500 Subject: [PATCH] Switch to regional server support for Perforce --- info.yml | 2 +- python/connection/connection.py | 8 ++++++-- python/sync/sync.py | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/info.yml b/info.yml index 25ad6e8..3f4e1ea 100644 --- a/info.yml +++ b/info.yml @@ -6,7 +6,7 @@ configuration: description: "The name of the project entity field that contains the perforce server to connect to. The value in the field should be of the form: 'protocol:server:port'." allows_empty: True - default_value: sg_p4_server + default_value: sg_perforce_server server_aliases: type: list diff --git a/python/connection/connection.py b/python/connection/connection.py index 16d3399..a9f6fe9 100644 --- a/python/connection/connection.py +++ b/python/connection/connection.py @@ -769,15 +769,19 @@ def _login_required(self, min_timeout=300): return True def _get_p4_server(self): + user = sgtk.util.get_current_user(self._fw.sgtk) + sg_user = self._fw.shotgun.find_one('HumanUser', [['id', 'is', user['id']]], ["sg_region"]) server_field = self._fw.get_setting("server_field") sg_project = self._fw.shotgun.find_one('Project', [['id', 'is', self._fw.context.project['id']]], [server_field]) server = sg_project.get(server_field) + region = sg_user.get("sg_region") + sg_server = self._fw.shotgun.find_one('CustomNonProjectEntity02', [['id', 'is', server['id']]], [region]) - if not server: + if not sg_server: self._fw.log_error("No server was configured for this project! Enter the p4 server in the project field '{}'".format(server_field)) return None - return str(sg_project.get(server_field)) + return str(sg_server.get(region)) def connect(allow_ui=True, user=None, password=None, workspace=None, progress=None): diff --git a/python/sync/sync.py b/python/sync/sync.py index f970353..cc1f03e 100644 --- a/python/sync/sync.py +++ b/python/sync/sync.py @@ -89,15 +89,19 @@ def _sync_with_dlg(self): def _get_p4_server(self): + user = sgtk.util.get_current_user(self._fw.sgtk) + sg_user = self._fw.shotgun.find_one('HumanUser', [['id', 'is', user['id']]], ["sg_region"]) server_field = self._fw.get_setting("server_field") sg_project = self._fw.shotgun.find_one('Project', [['id', 'is', self._fw.context.project['id']]], [server_field]) server = sg_project.get(server_field) + region = sg_user.get("sg_region") + sg_server = self._fw.shotgun.find_one('CustomNonProjectEntity02', [['id', 'is', server['id']]], [region]) - if not server: + if not sg_server: self._fw.log_error("No server was configured for this project! Enter the p4 server in the project field '{}'".format(server_field)) return None - return str(sg_project.get(server_field)) + return str(sg_server.get(region)) def sync_with_dialog(app, entities_to_sync, specific_files=False):