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)