示例#1
0
    def _GetPluginObj(self, plugin_obj, *args, **kwargs):
        if isinstance(plugin_obj, basestring):
            plugin_name = plugin_obj

        elif utils.issubclass(plugin_obj, plugin.Command):
            plugin_name = plugin_obj.name
            plugin_cls = plugin_obj

        elif isinstance(plugin_obj, plugin.Command):
            return plugin_obj

        else:
            raise TypeError(
                "First parameter should be a plugin name or instance.")

        # When passed as a string this specifies a plugin name.
        if isinstance(plugin_obj, basestring):
            plugin_cls = getattr(self.plugins, plugin_obj, None)
            if plugin_cls is None:
                self.logging.error(
                    "Plugin %s is not active. Is it supported with "
                    "this profile?", plugin_name)
                return

        # Instantiate the plugin object.
        kwargs["session"] = self
        return plugin_cls(*args, **kwargs)
示例#2
0
    def _GetPluginObj(self, plugin_obj, *args, **kwargs):
        if isinstance(plugin_obj, basestring):
            plugin_name = plugin_obj

        elif utils.issubclass(plugin_obj, plugin.Command):
            plugin_name = plugin_obj.name
            plugin_cls = plugin_obj

        elif isinstance(plugin_obj, plugin.Command):
            return plugin_obj

        else:
            raise TypeError(
                "First parameter should be a plugin name or instance.")

        # When passed as a string this specifies a plugin name.
        if isinstance(plugin_obj, basestring):
            plugin_cls = getattr(self.plugins, plugin_obj, None)
            if plugin_cls is None:
                self.logging.error(
                    "Plugin %s is not active. Is it supported with "
                    "this profile?", plugin_name)
                return

        # Instantiate the plugin object.
        kwargs["session"] = self
        return plugin_cls(*args, **kwargs)
示例#3
0
def SerializerType(cls):
    if utils.issubclass(cls, serializer.SerializedObject):
        pass

    elif isinstance(cls, basestring):
        cls = serializer.SerializedObject.classes.get(cls)
        if cls is None:
            raise TypeError("Unable to find constructor for %s" % cls)

    else:
        raise TypeError("Must provide an instance of SerializedObject.")

    def encode(x):
        if not isinstance(x, cls):
            raise TypeError("Can only store objects of type %s" % cls)
        return x.to_json()

    def decode(x):
        if not x:
            data = dict(__type__=cls.__name__)
        else:
            data = json.loads(x)

        try:
            return serializer.unserialize(data, strict_parsing=False)
        except ValueError as e:
            logging.debug("%s: Unable to decode %s", e, data)
            # If the data in the table is seriously messed up we just replace it
            # with a new object.
            return cls()

    return SQLCustomType(type='text',
                         native='text',
                         encoder=encode,
                         decoder=decode)
示例#4
0
    def _GetPluginName(self, plugin_obj):
        """Extract the name from the plugin object."""
        if isinstance(plugin_obj, basestring):
            return plugin_obj

        elif utils.issubclass(plugin_obj, plugin.Command):
            return plugin_obj.name

        elif isinstance(plugin_obj, plugin.Command):
            return plugin_obj.name
示例#5
0
    def _GetPluginName(self, plugin_obj):
        """Extract the name from the plugin object."""
        if isinstance(plugin_obj, basestring):
            return plugin_obj

        elif utils.issubclass(plugin_obj, plugin.Command):
            return plugin_obj.name

        elif isinstance(plugin_obj, plugin.Command):
            return plugin_obj.name