From 864c9c32427c8b8bf95248f53392a0d196629593 Mon Sep 17 00:00:00 2001 From: codeking Date: Thu, 19 Sep 2024 17:52:41 +0200 Subject: [PATCH] Update and refactor synchronization-related logic --- core/controllers/ApplicationController.py | 2 +- .../ApplicationVersionController.py | 28 +++++++++---------- core/controllers/ClientController.py | 19 ++++++++----- core/controllers/ClientVersionController.py | 2 +- core/controllers/LocationController.py | 2 +- .../controllers/SubscriptionPlanController.py | 2 +- 6 files changed, 30 insertions(+), 25 deletions(-) diff --git a/core/controllers/ApplicationController.py b/core/controllers/ApplicationController.py index e0f3e8f..80c0799 100644 --- a/core/controllers/ApplicationController.py +++ b/core/controllers/ApplicationController.py @@ -65,7 +65,7 @@ class ApplicationController: ProfileController.disable(profile, False, profile_observer=profile_observer) @staticmethod - def fetch(proxies: Optional[dict] = None): + def _sync(proxies: Optional[dict] = None): applications = WebServiceApiService.get_applications(proxies) diff --git a/core/controllers/ApplicationVersionController.py b/core/controllers/ApplicationVersionController.py index bc9a451..ebfd516 100644 --- a/core/controllers/ApplicationVersionController.py +++ b/core/controllers/ApplicationVersionController.py @@ -19,7 +19,20 @@ class ApplicationVersionController: return ApplicationVersion.find(application_code, version_number) @staticmethod - def fetch(proxies: Optional[dict] = None): + def install(application_version: ApplicationVersion, application_version_observer: Optional[ApplicationVersionObserver] = None, connection_observer: Optional[ConnectionObserver] = None): + + if not application_version.is_supported(): + raise UnsupportedApplicationVersionError('The application version in question is not supported.') + + from core.controllers.ConnectionController import ConnectionController + ConnectionController.with_preferred_connection(application_version, task=ApplicationVersionController._install, application_version_observer=application_version_observer, connection_observer=connection_observer) + + @staticmethod + def uninstall(application_version: ApplicationVersion): + shutil.rmtree(application_version.installation_path, ignore_errors=True) + + @staticmethod + def _sync(proxies: Optional[dict] = None): applications = ApplicationController.get_all() application_versions = [] @@ -34,19 +47,6 @@ class ApplicationVersionController: ApplicationVersion.truncate() ApplicationVersion.save_many(application_versions) - @staticmethod - def install(application_version: ApplicationVersion, application_version_observer: Optional[ApplicationVersionObserver] = None, connection_observer: Optional[ConnectionObserver] = None): - - if not application_version.is_supported(): - raise UnsupportedApplicationVersionError('The application version in question is not supported.') - - from core.controllers.ConnectionController import ConnectionController - ConnectionController.with_preferred_connection(application_version, task=ApplicationVersionController._install, application_version_observer=application_version_observer, connection_observer=connection_observer) - - @staticmethod - def uninstall(application_version: ApplicationVersion): - shutil.rmtree(application_version.installation_path, ignore_errors=True) - @staticmethod def _install(application_version: ApplicationVersion, application_version_observer: Optional[ApplicationVersionObserver] = None, proxies: Optional[dict] = None): diff --git a/core/controllers/ClientController.py b/core/controllers/ClientController.py index 95d1a04..22197fa 100644 --- a/core/controllers/ClientController.py +++ b/core/controllers/ClientController.py @@ -31,18 +31,23 @@ class ClientController: def sync(client_observer: ClientObserver = None, connection_observer: ConnectionObserver = None): from core.controllers.ConnectionController import ConnectionController - ConnectionController.with_preferred_connection(task=ClientController._sync, client_observer=client_observer, connection_observer=connection_observer) + ConnectionController.with_preferred_connection(task=ClientController.__sync, client_observer=client_observer, connection_observer=connection_observer) @staticmethod - def _sync(client_observer: Optional[ClientObserver] = None, proxies: Optional[dict] = None): + def __sync(client_observer: Optional[ClientObserver] = None, proxies: Optional[dict] = None): if client_observer is not None: client_observer.notify('synchronizing') - ApplicationController.fetch(proxies) - ApplicationVersionController.fetch(proxies) - ClientVersionController.fetch(proxies) - LocationController.fetch(proxies) - SubscriptionPlanController.fetch(proxies) + # noinspection PyProtectedMember + ApplicationController._sync(proxies=proxies) + # noinspection PyProtectedMember + ApplicationVersionController._sync(proxies=proxies) + # noinspection PyProtectedMember + ClientVersionController._sync(proxies=proxies) + # noinspection PyProtectedMember + LocationController._sync(proxies=proxies) + # noinspection PyProtectedMember + SubscriptionPlanController._sync(proxies=proxies) ConfigurationController.update_last_synced_at() diff --git a/core/controllers/ClientVersionController.py b/core/controllers/ClientVersionController.py index be5df75..2b84cb4 100644 --- a/core/controllers/ClientVersionController.py +++ b/core/controllers/ClientVersionController.py @@ -22,7 +22,7 @@ class ClientVersionController: return ClientVersion.all() @staticmethod - def fetch(proxies: Optional[dict] = None): + def _sync(proxies: Optional[dict] = None): client_versions = WebServiceApiService.get_client_versions(proxies) diff --git a/core/controllers/LocationController.py b/core/controllers/LocationController.py index 4256021..7ecf844 100644 --- a/core/controllers/LocationController.py +++ b/core/controllers/LocationController.py @@ -14,7 +14,7 @@ class LocationController: return Location.all() @staticmethod - def fetch(proxies: Optional[dict] = None): + def _sync(proxies: Optional[dict] = None): locations = WebServiceApiService.get_locations(proxies) diff --git a/core/controllers/SubscriptionPlanController.py b/core/controllers/SubscriptionPlanController.py index 50b3b57..f7d9b93 100644 --- a/core/controllers/SubscriptionPlanController.py +++ b/core/controllers/SubscriptionPlanController.py @@ -16,7 +16,7 @@ class SubscriptionPlanController: return SubscriptionPlan.all(connection) @staticmethod - def fetch(proxies: Optional[dict] = None): + def _sync(proxies: Optional[dict] = None): subscription_plans = WebServiceApiService.get_subscription_plans(proxies)