76 lines
2 KiB
Python
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)
|