sp-hydra-veil-core/core/controllers/ConfigurationController.py

76 lines
2 KiB
Python

from core.Errors import UnknownConnectionTypeError
from core.models.Configuration import Configuration
from datetime import datetime, timezone
from typing import Optional
class ConfigurationController:
@staticmethod
def get():
return Configuration.get()
@staticmethod
def get_or_new():
configuration = ConfigurationController.get()
if configuration is None:
return Configuration()
return configuration
@staticmethod
def get_connection():
configuration = ConfigurationController.get()
if configuration is None or configuration.connection not in ('system', 'tor'):
raise UnknownConnectionTypeError('The preferred connection type could not be determined.')
return configuration.connection
@staticmethod
def set_connection(connection: Optional[str] = None):
configuration = ConfigurationController.get_or_new()
configuration.connection = connection
configuration.save(configuration)
@staticmethod
def get_auto_sync_enabled():
configuration = ConfigurationController.get()
if configuration is None:
return False
return configuration.auto_sync_enabled
@staticmethod
def set_auto_sync_enabled(enable_auto_sync: Optional[bool] = None):
configuration = ConfigurationController.get_or_new()
configuration.auto_sync_enabled = enable_auto_sync
configuration.save(configuration)
@staticmethod
def get_last_synced_at():
configuration = ConfigurationController.get()
if configuration is None:
return None
return configuration.last_synced_at
@staticmethod
def update_last_synced_at():
configuration = ConfigurationController.get_or_new()
configuration.last_synced_at = datetime.now(timezone.utc)
Configuration.save(configuration)
@staticmethod
def update_or_create(configuration):
Configuration.save(configuration)