Update and refactor synchronization-related logic
This commit is contained in:
		
							parent
							
								
									1ce2865564
								
							
						
					
					
						commit
						864c9c3242
					
				
					 6 changed files with 30 additions and 25 deletions
				
			
		| 
						 | 
					@ -65,7 +65,7 @@ class ApplicationController:
 | 
				
			||||||
            ProfileController.disable(profile, False, profile_observer=profile_observer)
 | 
					            ProfileController.disable(profile, False, profile_observer=profile_observer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def fetch(proxies: Optional[dict] = None):
 | 
					    def _sync(proxies: Optional[dict] = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        applications = WebServiceApiService.get_applications(proxies)
 | 
					        applications = WebServiceApiService.get_applications(proxies)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,20 @@ class ApplicationVersionController:
 | 
				
			||||||
        return ApplicationVersion.find(application_code, version_number)
 | 
					        return ApplicationVersion.find(application_code, version_number)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @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()
 | 
					        applications = ApplicationController.get_all()
 | 
				
			||||||
        application_versions = []
 | 
					        application_versions = []
 | 
				
			||||||
| 
						 | 
					@ -34,19 +47,6 @@ class ApplicationVersionController:
 | 
				
			||||||
        ApplicationVersion.truncate()
 | 
					        ApplicationVersion.truncate()
 | 
				
			||||||
        ApplicationVersion.save_many(application_versions)
 | 
					        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
 | 
					    @staticmethod
 | 
				
			||||||
    def _install(application_version: ApplicationVersion, application_version_observer: Optional[ApplicationVersionObserver] = None, proxies: Optional[dict] = None):
 | 
					    def _install(application_version: ApplicationVersion, application_version_observer: Optional[ApplicationVersionObserver] = None, proxies: Optional[dict] = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,18 +31,23 @@ class ClientController:
 | 
				
			||||||
    def sync(client_observer: ClientObserver = None, connection_observer: ConnectionObserver = None):
 | 
					    def sync(client_observer: ClientObserver = None, connection_observer: ConnectionObserver = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        from core.controllers.ConnectionController import ConnectionController
 | 
					        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
 | 
					    @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:
 | 
					        if client_observer is not None:
 | 
				
			||||||
            client_observer.notify('synchronizing')
 | 
					            client_observer.notify('synchronizing')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ApplicationController.fetch(proxies)
 | 
					        # noinspection PyProtectedMember
 | 
				
			||||||
        ApplicationVersionController.fetch(proxies)
 | 
					        ApplicationController._sync(proxies=proxies)
 | 
				
			||||||
        ClientVersionController.fetch(proxies)
 | 
					        # noinspection PyProtectedMember
 | 
				
			||||||
        LocationController.fetch(proxies)
 | 
					        ApplicationVersionController._sync(proxies=proxies)
 | 
				
			||||||
        SubscriptionPlanController.fetch(proxies)
 | 
					        # noinspection PyProtectedMember
 | 
				
			||||||
 | 
					        ClientVersionController._sync(proxies=proxies)
 | 
				
			||||||
 | 
					        # noinspection PyProtectedMember
 | 
				
			||||||
 | 
					        LocationController._sync(proxies=proxies)
 | 
				
			||||||
 | 
					        # noinspection PyProtectedMember
 | 
				
			||||||
 | 
					        SubscriptionPlanController._sync(proxies=proxies)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ConfigurationController.update_last_synced_at()
 | 
					        ConfigurationController.update_last_synced_at()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ class ClientVersionController:
 | 
				
			||||||
        return ClientVersion.all()
 | 
					        return ClientVersion.all()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def fetch(proxies: Optional[dict] = None):
 | 
					    def _sync(proxies: Optional[dict] = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        client_versions = WebServiceApiService.get_client_versions(proxies)
 | 
					        client_versions = WebServiceApiService.get_client_versions(proxies)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ class LocationController:
 | 
				
			||||||
        return Location.all()
 | 
					        return Location.all()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def fetch(proxies: Optional[dict] = None):
 | 
					    def _sync(proxies: Optional[dict] = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        locations = WebServiceApiService.get_locations(proxies)
 | 
					        locations = WebServiceApiService.get_locations(proxies)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ class SubscriptionPlanController:
 | 
				
			||||||
        return SubscriptionPlan.all(connection)
 | 
					        return SubscriptionPlan.all(connection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def fetch(proxies: Optional[dict] = None):
 | 
					    def _sync(proxies: Optional[dict] = None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        subscription_plans = WebServiceApiService.get_subscription_plans(proxies)
 | 
					        subscription_plans = WebServiceApiService.get_subscription_plans(proxies)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue