Ejemplo n.º 1
0
def mp_legacy_publisher(req, possible_module, possible_handler):
    """
    mod_python legacy publisher minimum implementation.
    """
    the_module = open(possible_module).read()
    module_globals = {}

    try:
        exec(the_module, module_globals)
    except:
        # Log which file caused the exec error (traceback won't do it for
        # some reason) and relaunch the exception
        registerException('Error executing the module %s' % possible_module)
        raise

    if possible_handler in module_globals and \
           callable(module_globals[possible_handler]):
        from indico.web.wsgi.indico_wsgi_handler_utils import _check_result
        ## the req.form must be casted to dict because of Python 2.4 and earlier
        ## otherwise any object exposing the mapping interface can be
        ## used with the magic **
        form = dict(req.form)

        _convert_to_string(form)

        try:
            return _check_result(req, module_globals[possible_handler](req,
                                                                       **form))
        except TypeError, err:
            if ("%s() got an unexpected keyword argument" % possible_handler) in \
                   str(err) or ('%s() takes at least' % possible_handler) in str(err):
                import inspect
                inspected_args = inspect.getargspec(
                    module_globals[possible_handler])
                expected_args = list(inspected_args[0])
                expected_defaults = list(inspected_args[3])
                expected_args.reverse()
                expected_defaults.reverse()
                # Write the exception to Apache error log file
                registerException("Wrong GET parameter set in calling a legacy "
                                  "publisher handler for %s: expected_args=%s, "
                                  "found_args=%s" % \
                                  (possible_handler, repr(expected_args),
                                   repr(req.form.keys())))
                cleaned_form = {}
                for index, arg in enumerate(expected_args):
                    if arg == 'req':
                        continue
                    if index < len(expected_defaults):
                        cleaned_form[arg] = form.get(arg,
                                                     expected_defaults[index])
                    else:
                        cleaned_form[arg] = form.get(arg, None)
                return _check_result(
                    req, module_globals[possible_handler](req, **cleaned_form))
            else:
                raise
Ejemplo n.º 2
0
def mp_legacy_publisher(req, possible_module, possible_handler):
    """
    mod_python legacy publisher minimum implementation.
    """
    the_module = open(possible_module).read()
    module_globals = {}

    try:
        exec(the_module, module_globals)
    except:
        # Log which file caused the exec error (traceback won't do it for
        # some reason) and relaunch the exception
        registerException("Error executing the module %s" % possible_module)
        raise

    if possible_handler in module_globals and callable(module_globals[possible_handler]):
        from indico.web.wsgi.indico_wsgi_handler_utils import _check_result

        ## the req.form must be casted to dict because of Python 2.4 and earlier
        ## otherwise any object exposing the mapping interface can be
        ## used with the magic **
        form = dict(req.form)

        _convert_to_string(form)

        try:
            return _check_result(req, module_globals[possible_handler](req, **form))
        except TypeError, err:
            if ("%s() got an unexpected keyword argument" % possible_handler) in str(err) or (
                "%s() takes at least" % possible_handler
            ) in str(err):
                import inspect

                inspected_args = inspect.getargspec(module_globals[possible_handler])
                expected_args = list(inspected_args[0])
                expected_defaults = list(inspected_args[3])
                expected_args.reverse()
                expected_defaults.reverse()
                # Write the exception to Apache error log file
                registerException(
                    "Wrong GET parameter set in calling a legacy "
                    "publisher handler for %s: expected_args=%s, "
                    "found_args=%s" % (possible_handler, repr(expected_args), repr(req.form.keys()))
                )
                cleaned_form = {}
                for index, arg in enumerate(expected_args):
                    if arg == "req":
                        continue
                    if index < len(expected_defaults):
                        cleaned_form[arg] = form.get(arg, expected_defaults[index])
                    else:
                        cleaned_form[arg] = form.get(arg, None)
                return _check_result(req, module_globals[possible_handler](req, **cleaned_form))
            else:
                raise
Ejemplo n.º 3
0
def plugin_publisher(req, path, rh, urlparams):
    """
    Publishes the plugin described in path
    """
    form = dict(req.form)

    _convert_to_string(form)
    return _check_result(req, rh(req, **urlparams).process(form))
Ejemplo n.º 4
0
def plugin_publisher(req, path, rh, urlparams):
    """
    Publishes the plugin described in path
    """
    form = dict(req.form)

    _convert_to_string(form)
    return _check_result(req, rh(req, **urlparams).process(form))