73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
from processors import DummyProcessor, DefaultProcessor, EncryptedProcessor
|
|
from seafapi import *
|
|
|
|
|
|
class SeafScreencloudSettings:
|
|
|
|
def __init__(self):
|
|
self.processor = DummyProcessor()
|
|
self.library = None # (Id, Name)
|
|
self.library_path = "/"
|
|
self.token = None # SefileToken
|
|
self.upload_scheme = "regular"
|
|
self.url = None
|
|
|
|
def _client(self):
|
|
if self.token and self.url:
|
|
client = SeafileClient(
|
|
self.url, self.token.username, token=self.token)
|
|
|
|
def c():
|
|
return client
|
|
self.client = c
|
|
return c()
|
|
return None
|
|
|
|
def load(self, settings):
|
|
|
|
self.client = self._client
|
|
|
|
self.url = settings.value("seafile-url", None)
|
|
lib = tuple(settings.value("library", "/").split("/"))
|
|
(id, name) = lib
|
|
if len(id) == 0 or self.client() == None:
|
|
self.library = None
|
|
else:
|
|
self.library = SeafileLibrary(self.client(), id, name, name)
|
|
self.library_path = settings.value("library-path", "/")
|
|
(user, tkn) = (settings.value("auth-username", None),
|
|
settings.value("auth-token", None))
|
|
if user == None or tkn == None:
|
|
self.token = None
|
|
else:
|
|
self.token = SeafileToken(user, tkn)
|
|
|
|
processors = {
|
|
"default": DefaultProcessor,
|
|
"enc": EncryptedProcessor
|
|
}
|
|
|
|
if settings.value("processor", None) in processors:
|
|
self.processor = processors[settings.value("processor", None)](
|
|
self.library, self.library_path)
|
|
self.processor.load_settings(settings)
|
|
elif self.library:
|
|
self.processor = DefaultProcessor(self.library, self.library_path)
|
|
else:
|
|
self.processor = DummyProcessor()
|
|
|
|
# TODO:
|
|
self.upload_scheme = "regular"
|
|
|
|
def save(self, settings):
|
|
settings.setValue("seafile-url", self.url)
|
|
if self.library is not None:
|
|
settings.setValue("library", "%s/%s" %
|
|
(self.library.id, self.library.name))
|
|
settings.setValue("library-path", self.library_path)
|
|
if self.token != None:
|
|
settings.setValue("auth-username", self.token.username)
|
|
settings.setValue("auth-token", self.token.token)
|
|
settings.setValue("processor", self.processor.name())
|
|
self.processor.save_settings(settings)
|