Refactor - changed logic to loop through alt sites

This commit is contained in:
Petr Kalis 2022-04-08 12:21:00 +02:00
parent fec9144a5e
commit 43a68681d6

View file

@ -313,18 +313,23 @@ class SyncServerModule(OpenPypeModule, ITrayModule):
alt_site_pairs[alt_site] = []
alt_site_pairs[alt_site].extend([site_name])
# transitive relationship, eg site is alternative to another which is
# alternative to nex site
loop = True
while loop:
loop = False
for site, alt_sites in alt_site_pairs.items():
for alt_site in alt_sites:
for alt_alt_site in alt_site_pairs.get(alt_site, []):
if (alt_alt_site != site
and alt_alt_site not in alt_sites):
alt_site_pairs[site].append(alt_alt_site)
loop = True
for site_name, alt_sites in alt_site_pairs.items():
sites_queue = deque(alt_sites)
while sites_queue:
alt_site = sites_queue.popleft()
# safety against wrong config
# {"SFTP": {"alternative_site": "SFTP"}
if alt_site == site_name or alt_site not in alt_site_pairs:
continue
for alt_alt_site in alt_site_pairs[alt_site]:
if (
alt_alt_site != site_name
and alt_alt_site not in alt_sites
):
alt_sites.append(alt_alt_site)
sites_queue.append(alt_alt_site)
return alt_site_pairs
@ -992,6 +997,11 @@ class SyncServerModule(OpenPypeModule, ITrayModule):
if self.enabled and sync_settings.get('enabled'):
sites.append(self.LOCAL_SITE)
active_site = sync_settings["config"]["active_site"]
# for Tray running background process
if active_site not in sites and active_site == get_local_site_id():
sites.append(active_site)
return sites
def tray_init(self):