def __init__(self): logDebug("Main: Init") self.thread = SeriesPluginWorker(self.gotResult) Modules.__init__(self) ChannelsBase.__init__(self) # Because of the same XMLFile base class we intantiate a new object self.xmltv = XMLTVBase() self.serviceHandler = eServiceCenter.getInstance() #http://bugs.python.org/issue7980 datetime.strptime('2012-01-01', '%Y-%m-%d') self.identifier_elapsed = self.instantiateModuleWithName( config.plugins.seriesplugin.identifier_elapsed.value ) #logDebug(self.identifier_elapsed) self.identifier_today = self.instantiateModuleWithName( config.plugins.seriesplugin.identifier_today.value ) #logDebug(self.identifier_today) self.identifier_future = self.instantiateModuleWithName( config.plugins.seriesplugin.identifier_future.value ) #logDebug(self.identifier_future) pattern = config.plugins.seriesplugin.pattern_title.value pattern = pattern.replace("{org:s}", "(.+)") pattern = re.sub('{season:?\d*d?}', '\d+', pattern) pattern = re.sub('{episode:?\d*d?}', '\d+', pattern) pattern = re.sub('{rawseason:s}', '.+', pattern) pattern = re.sub('{rawseason:s}', '.+', pattern) pattern = pattern.replace("{title:s}", ".+") self.compiledRegexpSeries = re.compile(pattern)
def loadSkarphedChildren(self): self.loadPublicKey() self.getMaintenanceMode() self.loadRendermode() if 'skarphed.users.view' in self.serverRights: self.users = Users(self) self.addChild(self.users) if 'skarphed.modules.install' in self.serverRights or 'skarphed.modules.uninstall' in self.serverRights: self.modules = Modules(self) self.addChild(self.modules) if 'skarphed.roles.view' in self.serverRights: self.roles = Roles(self) self.addChild(self.roles) if True: #'skarphed.sites.view' in self.serverRights self.sites = Sites(self) self.addChild(self.sites) if True: self.views = Views(self) self.addChild(self.views) if True: #'skarphed.template.modify' in self.serverRights self.template = Template(self) self.addChild(self.template) if True: #'skarphed.operation.modify' in self.serverRights self.operationManager = OperationManager(self) #TODO: restliche implementieren self.pokethread = PokeThread(self) self.pokethread.start()
def __init__(self, path=""): Modules.__init__(self) ConfigFile.__init__(self) self.services = [] self.controllers = [] self.pushcallbacks = {} self.pusherrbacks = {} # Read module files from subfolders self.servicemodules = self.loadModules(SERVICE_PATH, ServiceBase) self.controllermodules = self.loadModules(CONTROLLER_PATH, ControllerBase)
def loadSkarphedChildren(self): self.clearChildren() self.loadPublicKey() self.getMaintenanceMode() self.loadRendermode() if 'skarphed.users.view' in self.serverRights: self.users = Users(self) self.addChild(self.users) if 'skarphed.modules.install' in self.serverRights or 'skarphed.modules.uninstall' in self.serverRights: self.modules = Modules(self) self.addChild(self.modules) if 'skarphed.roles.view' in self.serverRights: self.roles = Roles(self) self.addChild(self.roles) if True: #'skarphed.sites.view' in self.serverRights self.sites = Sites(self) self.addChild(self.sites) if True: self.views = Views(self) self.addChild(self.views) if True: #'skarphed.template.modify' in self.serverRights self.template = Template(self) self.addChild(self.template) if True: self.media = Media(self) self.addChild(self.media) if True: #'skarphed.operation.modify' in self.serverRights self.operationManager = OperationManager(self)
class Skarphed(Instance): STATE_OFFLINE = 0 STATE_ONLINE = 1 SCV_LOCKED = 0 SCV_UNLOCKED = 1 LOADED_NONE = 0 LOADED_PROFILE = 1 LOADED_SERVERDATA = 2 def __init__(self, server, url="", username="", password=""): Instance.__init__(self,server) self.instanceTypeName = "skarphed" self.displayName = "Skarphed" self.state = self.STATE_OFFLINE self.scv_loggedin = self.SCV_LOCKED self.load = self.LOADED_NONE self.data = {} self.refreshSessionState = False self.url = url self.username = username self.password = password self.publickey = None self.repo_url = "" self.users = None self.template = None self.roles = None self.modules = None self.sites = None self.operationManager = None self.operationDaemon = None self.maintenance_mode = True self.rendermode = None self.cssPropertySet = None def invokeDestructionCallback(self, data): instanceId = data if instanceId == None: print "No sufficient rights only root can destroy" return target = self.getServer().getTarget() destroyer = target.getDestroyer()(int(instanceId), self) destroyer.takedown() @rpc(invokeDestructionCallback) def getInstanceId(self): #HERE BE DRAGONS: invoke destruction is currently the only use # of getInstanceId, but this may change in the # future. Works for now, but likely won't always. pass def invokeDestruction(self): self.getInstanceId() def setRefreshSessionFlag(self): self.refreshSessionState = True def unsetRefreshSessionFlag(self): self.refreshSessionState = False def isRefreshingSession(self): return self.refreshSessionState def setUrl(self,url): self.url= url self.updated() def getUrl(self,without_proto=False): if without_proto: return self.url.replace("http://","",1) else: return self.url def setScvName(self,name): self.username = name def setScvPass(self, password): self.password = password def getScvName(self): return self.username def getScvPass(self): return self.password def getUsername(self): return self.getScvName() def getPassword(self): return self.getScvPass() def setUsername(self,username): return self.setScvName(username) def setPassword(self,password): return self.setScvPass(password) def setPublicKey(self, publickey): self.publickey = publickey def getPublickey(self): return self.publickey def loadPublicKeyCallback(self, result): if self.publickey == None: self.publickey = result else: if self.publickey == result: return else: pass #TODO Implement Error behaviour. this means, the publickey changed since last login @rpc(loadPublicKeyCallback) def getPublicKey(self): pass def loadPublicKey(self): self.getPublicKey() def getServerInfoCallback(self, result): self.data['name'] = result self.load = self.LOADED_SERVERDATA self.state = self.STATE_ONLINE self.updated() @rpc(getServerInfoCallback) def getServerInfo(self): pass def loadServerInfo(self): self.getServerInfo() def getMaintenanceModeCallback(self,data): self.maintenance_mode = data self.updated() @rpc(getMaintenanceModeCallback) def retrieveMaintenanceMode(self): pass def getMaintenanceMode(self): self.retrieveMaintenanceMode() def setMaintenanceModeCallback(self,data): self.getMaintenanceMode() @rpc(setMaintenanceModeCallback) def changeMaintenanceMode(self, state): pass def setMaintenanceMode(self, active): self.changeMaintenanceMode(active) def isMaintenanceMode(self): return self.maintenance_mode def loadRendermodeCallback(self, data): self.rendermode = data self.updated() @rpc(loadRendermodeCallback) def retrieveRendermode(self): pass def loadRendermode(self): self.retrieveRendermode() def setRendermodeCallback(self, data): self.loadRendermode() @rpc(setRendermodeCallback) def changeRendermode(self, mode): pass def setRendermode(self, mode): self.changeRendermode(mode) def getRendermode(self): return self.rendermode def loadSkarphedChildren(self): self.clearChildren() self.loadPublicKey() self.getMaintenanceMode() self.loadRendermode() if 'skarphed.users.view' in self.serverRights: self.users = Users(self) self.addChild(self.users) if 'skarphed.modules.install' in self.serverRights or 'skarphed.modules.uninstall' in self.serverRights: self.modules = Modules(self) self.addChild(self.modules) if 'skarphed.roles.view' in self.serverRights: self.roles = Roles(self) self.addChild(self.roles) if True: #'skarphed.sites.view' in self.serverRights self.sites = Sites(self) self.addChild(self.sites) if True: self.views = Views(self) self.addChild(self.views) if True: #'skarphed.template.modify' in self.serverRights self.template = Template(self) self.addChild(self.template) if True: self.media = Media(self) self.addChild(self.media) if True: #'skarphed.operation.modify' in self.serverRights self.operationManager = OperationManager(self) #TODO: Fix Poke-GUI-hangup bug and uncomment following lines #self.pokethread = PokeThread(self) #self.pokethread.start() def authenticateCallback(self, result): if result == False: self.scv_loggedin = self.SCV_LOCKED self.serverRights = [] else: self.scv_loggedin = self.SCV_UNLOCKED self.serverRights = result self.updated() self.loadSkarphedChildren() @rpc(authenticateCallback) def authenticateUser(self, username, password): pass def authenticate(self): self.authenticateUser(self.username,self.password) def checkPermission(self, permission): return permission in self.serverRights def establishConnections(self): self.loadServerInfo() self.authenticate() def getName(self): if self.load == self.LOADED_SERVERDATA: return self.data['name']+" [ "+self.url+" ]" elif self.load == self.LOADED_PROFILE: return " [ "+self.url+" ]" else: return "Unknown SkarphedServer" def getRepoURL(self): return self.repo_url def getRepositoryCallback(self, data): self.repo_url = data["ip"]+":"+str(data["port"]) self.updated() @rpc(getRepositoryCallback) def retrieveRepository(self): pass def getRepository(self): self.retrieveRepository() def setRepositoryCallback(self,res): self.modules.refresh() @rpc(setRepositoryCallback) def changeRepository(self, hostname, port): pass def setRepository(self,repostring): hostname = "" port = 80 splitted = repostring.split(":") if len(splitted)==2: try: port = int(splitted[1]) except ValueError: raise RepositoryException(RepositoryException.get_msg(101)) if port > 65535 or port < 1: raise RepositoryException(RepositoryException.get_msg(101)) hostname=splitted[0] elif len(splitted)==1: hostname=splitted[0] else: raise RepositoryException(RepositoryException.get_msg(100)) if hostname == "": raise RepositoryException(RepositoryException.get_msg(102)) self.changeRepository(hostname,port) self.repo_url = hostname+":"+str(port) def loadProfileInfo(self,profileInfo): pass def getSCVState(self): return self.scv_loggedin def isOnline(self): return self.state==self.STATE_ONLINE def loadCssPropertySetCallback(self,res): self.cssPropertySet = res self.updated() @rpc(loadCssPropertySetCallback) def getCssPropertySet(self, module_id=None, widget_id=None, session_id=None): pass def loadCssPropertySet(self): self.getCssPropertySet() def updateModulesCallback(self): self.modules.refresh() @rpc(updateModulesCallback) def invokeUpdateModules(self): pass def updateModules(self): self.invokeUpdateModules() def getCssPropertySetForGui(self): return self.cssPropertySet def setCssPropertySetFromGui(self,cssPropertySet): self.cssPropertySet['properties'] = cssPropertySet def saveCssPropertySetCallback(self,res): self.loadCssPropertySet() @rpc(saveCssPropertySetCallback) def setCssPropertySet(self, csspropertyset): pass def saveCssPropertySet(self): self.setCssPropertySet(self.cssPropertySet) def getOperationManager(self): return self.operationManager def getOperationDaemon(self): if self.operationDaemon is None: self.operationDaemon = OperationDaemon(self) return self.operationDaemon def uploadBinaryCallback(self, res): # res is the new ID of the uploaded binary file return res @rpc(uploadBinaryCallback) def storeBinary(self, data, filename): pass def uploadBinary(self, filepath): f = open(filepath, 'r') data = f.read() f.close() data = base64.b64encode(data) filename = filepath.split("/")[1:] self.storeBinary(data, filename) def getTemplate(self): return self.template def getModules(self): return self.modules def getMedia(self): return self.media def getSites(self): return self.sites def getViews(self): return self.views def getUsers(self): return self.users def getRoles(self): return self.roles def doRPCCall(self, callback, method, handled_object, params=[], errorcallback=None): """ sends an http-call to this instance """ call = SkarphedRPC(self,callback, method, handled_object, params, errorcallback) call.start() def getServer(self): pass return self.par.getServer() def getParent(self): return self.par
class Skarphed(Instance): STATE_OFFLINE = 0 STATE_ONLINE = 1 SCV_LOCKED = 0 SCV_UNLOCKED = 1 LOADED_NONE = 0 LOADED_PROFILE = 1 LOADED_SERVERDATA = 2 def __init__(self, server, url="", username="", password=""): Instance.__init__(self,server) self.instanceTypeName = "skarphed" self.displayName = "Skarphed" self.state = self.STATE_OFFLINE self.scv_loggedin = self.SCV_LOCKED self.load = self.LOADED_NONE self.data = {} self.url = url self.username = username self.password = password self.publickey = None self.repo_url = "" self.users = None self.template = None self.roles = None self.modules = None self.sites = None self.operationManager = None self.operationDaemon = None self.maintenance_mode = True self.rendermode = None self.cssPropertySet = None def invokeDestructionCallback(self, data): instanceId = data if instanceId == None: print "No sufficient rights only root can destroy" return target = self.getServer().getTarget() destroyer = target.getDestroyer()(int(instanceId), self) destroyer.takedown() def invokeDestruction(self): self.getApplication().doRPCCall(self,self.invokeDestructionCallback, "getInstanceId") def setUrl(self,url): self.url= url self.updated() def getUrl(self): return self.url def setScvName(self,name): self.username = name def setScvPass(self, password): self.password = password def getScvName(self): return self.username def getScvPass(self): return self.password def getUsername(self): return self.getScvName() def getPassword(self): return self.getScvPass() def setUsername(self,username): return self.setScvName(username) def setPassword(self,password): return self.setScvPass(password) def setPublicKey(self, publickey): self.publickey = publickey def getPublicKey(self): return self.publickey def loadPublicKeyCallback(self, result): if self.publickey == None: self.publickey = result else: if self.publickey == result: return else: pass #TODO Implement Error behaviour. this means, the publickey changed since last login def loadPublicKey(self): self.getApplication().doRPCCall(self,self.loadPublicKeyCallback, "getPublicKey") def getServerInfoCallback(self, result): self.data['name'] = result self.load = self.LOADED_SERVERDATA self.state = self.STATE_ONLINE self.updated() def getServerInfo(self): self.getApplication().doRPCCall(self,self.getServerInfoCallback, "getServerInfo") def getMaintenanceModeCallback(self,data): self.maintenance_mode = data self.updated() def getMaintenanceMode(self): self.getApplication().doRPCCall(self,self.getMaintenanceModeCallback, "getMaintenanceMode") def setMaintenanceModeCallback(self,data): self.getMaintenanceMode() def setMaintenanceMode(self, active): self.getApplication().doRPCCall(self,self.setMaintenanceModeCallback, "setMaintenanceMode", [active]) def isMaintenanceMode(self): return self.maintenance_mode def loadRendermodeCallback(self, data): self.rendermode = data self.updated() def loadRendermode(self): self.getApplication().doRPCCall(self,self.loadRendermodeCallback, "getRendermode") def setRendermodeCallback(self, data): self.loadRendermode() def setRendermode(self, mode): self.getApplication().doRPCCall(self,self.setRendermodeCallback, "setRendermode", [mode]) def getRendermode(self): return self.rendermode def loadSkarphedChildren(self): self.loadPublicKey() self.getMaintenanceMode() self.loadRendermode() if 'skarphed.users.view' in self.serverRights: self.users = Users(self) self.addChild(self.users) if 'skarphed.modules.install' in self.serverRights or 'skarphed.modules.uninstall' in self.serverRights: self.modules = Modules(self) self.addChild(self.modules) if 'skarphed.roles.view' in self.serverRights: self.roles = Roles(self) self.addChild(self.roles) if True: #'skarphed.sites.view' in self.serverRights self.sites = Sites(self) self.addChild(self.sites) if True: self.views = Views(self) self.addChild(self.views) if True: #'skarphed.template.modify' in self.serverRights self.template = Template(self) self.addChild(self.template) if True: #'skarphed.operation.modify' in self.serverRights self.operationManager = OperationManager(self) #TODO: restliche implementieren self.pokethread = PokeThread(self) self.pokethread.start() def authenticateCallback(self, result): if result == False: self.scv_loggedin = self.SCV_LOCKED self.serverRights = [] else: self.scv_loggedin = self.SCV_UNLOCKED self.serverRights = result self.updated() self.loadSkarphedChildren() def checkPermission(self, permission): return permission in self.serverRights def authenticate(self): self.getApplication().doRPCCall(self,self.authenticateCallback, "authenticateUser", [self.username,self.password]) def establishConnections(self): self.getServerInfo() self.authenticate() def getName(self): if self.load == self.LOADED_SERVERDATA: return self.data['name']+" [ "+self.url+" ]" elif self.load == self.LOADED_PROFILE: return " [ "+self.url+" ]" else: return "Unknown SkarphedServer" def getRepoURL(self): return self.repo_url def getRepositoryCallback(self, data): self.repo_url = data["ip"]+":"+str(data["port"]) self.updated() def getRepository(self): self.getApplication().doRPCCall(self, self.getRepositoryCallback, "getRepository") def setRepositoryCallback(self,res): self.modules.refresh() def setRepository(self,repostring): hostname = "" port = 80 splitted = repostring.split(":") if len(splitted)==2: try: port = int(splitted[1]) except ValueError: raise RepositoryException(RepositoryException.get_msg(101)) if port > 65535 or port < 1: raise RepositoryException(RepositoryException.get_msg(101)) hostname=splitted[0] elif len(splitted)==1: hostname=splitted[0] else: raise RepositoryException(RepositoryException.get_msg(100)) if hostname == "": raise RepositoryException(RepositoryException.get_msg(102)) self.getApplication().doRPCCall(self,self.setRepositoryCallback, "setRepository", [hostname,port]) self.repo_url = hostname+":"+str(port) def loadProfileInfo(self,profileInfo): pass def getSCVState(self): return self.scv_loggedin def isOnline(self): return self.state==self.STATE_ONLINE def loadCssPropertySetCallback(self,res): self.cssPropertySet = res self.updated() def loadCssPropertySet(self): self.getApplication().doRPCCall(self,self.loadCssPropertySetCallback, "getCssPropertySet", [None,None,None]) def updateModulesCallback(self): self.modules.refresh() def updateModules(self): self.getApplication().doRPCCall(self,self.updateModulesCallback, "updateModules") def getCssPropertySet(self): return self.cssPropertySet def setCssPropertySet(self,cssPropertySet): self.cssPropertySet['properties'] = cssPropertySet def saveCssPropertySetCallback(self,res): self.loadCssPropertySet() def saveCssPropertySet(self): self.getApplication().doRPCCall(self,self.saveCssPropertySetCallback, "setCssPropertySet", [self.cssPropertySet]) def getOperationManager(self): return self.operationManager def getOperationDaemon(self): if self.operationDaemon is None: self.operationDaemon = OperationDaemon(self) return self.operationDaemon def uploadBinaryCallback(self, res): # res is the new ID of the uploaded binary file return res def uploadBinary(self, filepath): f = open(filepath, 'r') data = f.read() f.close() data = base64.b64encode(data) filename = filepath.split("/")[1:] self.getApplication().doRPCCall(self,self.uploadBinaryCallback, "uploadBinary", [data, filename]) def getTemplate(self): return self.template def getModules(self): return self.modules def getSites(self): return self.sites def getViews(self): return self.views def getUsers(self): return self.users def getServer(self): pass return self.par.getServer() def getParent(self): return self.par