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)
Пример #2
0
 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()
Пример #3
0
	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 __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)
Пример #5
0
 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)
Пример #6
0
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
Пример #7
0
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