2018-11-24 19:51:01 +01:00

77 lines
2.7 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
self.link_expiry = 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)
self.link_expiry = int(settings.value("link-expiry", 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))
if self.link_expiry is not None:
settings.setValue("link-expiry", self.link_expiry)
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)