示例#1
0
    def checkForRequirements(cls, requirements):
        for req in requirements:
            if req.name == None and req.code == 0 and req.developer == None and req.version == 0:
                continue
            
            if req.name is not None and (req.code is None and req.developer is None):
                raise ReferenceError("Unable to satisfy requirements. Only Plugin name passed, required code name or developer name.")

            if req.name and req.developer:
                plugins =  Abstraction.getAllPluginsByDeveloper(req.developer)
                found = sum(p.name == req.name for p in plugins) > 0
                if not found:
                    raise NotImplementedError("Requirement not satsfied for {}".format(req.name))

                for p in plugins:
                    if p.name is not req.name: continue

                    if p.version is not 0 and req.version != 0 and p.version < req.version:
                        raise ImportError("Plugin version not satisfied for {}".format(req.name))
                    break

            elif req.code is not 0:
                if not Abstraction.PluginExists(req.code):
                    raise NotImplementedError("Requirement not satisfied for key:{}".format(req.code))

                plugin = Abstraction.getPlugin(_id)
                if plugin.version != 0 and req.version != 0 and plugin.version < req.version:
                    raise ImportError("Plugin version not satisfied for {}".format(plugin))
示例#2
0
    def getRequirement(cls, req, ps = None):
        if req.name == None and req.code == 0 and req.developer == None and req.version == 0:
                return None
            
        if req.name is not None and (req.code is None and req.developer is None):
            return None

        if req.name and req.developer:
            plugins =  Abstraction.getAllPluginsByDeveloper(req.developer, ps)

            for p in plugins:
                if p.name is not req.name: continue

                if p.version is not 0 and req.version != 0 and p.version < req.version:
                    return None
                
                return p

        elif req.code is not 0:
            if not Abstraction.PluginExists(req.code, ps):
                return None

            plugin = Abstraction.getPlugin(_id, ps)
            if plugin.version != 0 and req.version != 0 and plugin.version < req.version:
                return None

            return Plugin

        return None
示例#3
0
def loadPluginObjects():
    plugins = getPlugins()

    for plugin in plugins:
        satisfyPluginDependency(plugin.requirements)

        if type(plugin) is IPluginAbstractMeta:

            continue

        exists = sum(k.name == plugin.name and k.developer == plugin.developer
                     and (k.version == plugin.version or k.version == 0
                          or plugin.version == 0)
                     for k in Abstraction.getAllPlugins()) > 0
        if not exists:
            PLUGIN_OBJECTS.append(plugin())