from core.Constants import Constants from core.controllers.ApplicationController import ApplicationController from core.controllers.ApplicationVersionController import ApplicationVersionController from core.controllers.ClientVersionController import ClientVersionController from core.controllers.ConfigurationController import ConfigurationController from core.controllers.LocationController import LocationController from core.controllers.SubscriptionPlanController import SubscriptionPlanController from core.observers import ClientObserver from core.observers.ConnectionObserver import ConnectionObserver from os import path from typing import Optional class ClientController: @staticmethod def get_working_directory(): import main return str(path.dirname(path.abspath(main.__file__))) @staticmethod def get_version(): return ClientVersionController.get(Constants.SP_CLIENT_VERSION) @staticmethod def can_be_updated(): return not ClientVersionController.is_latest(ClientController.get_version()) @staticmethod 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) @staticmethod def __sync(client_observer: Optional[ClientObserver] = None, proxies: Optional[dict] = None): if client_observer is not None: client_observer.notify('synchronizing') # 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()