Exemple #1
0
def publish_module(module_name,
                   stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr,
                   environ=os.environ, debug=0, request=None, response=None,
                   extra={}):
    must_die=0
    status=200
    after_list=[None]
    from Response import Response
    from Request import Request
    from Publish import publish
    try:
        try:
            if response is None:
                response=Response(stdout=stdout, stderr=stderr)
            else:
                stdout=response.stdout
            if request is None:
                request=Request(stdin, environ, response)
            for k, v in extra.items(): request[k]=v
            response = publish(request, module_name, after_list, debug=debug)
        except SystemExit, v:
            if hasattr(sys, 'exc_info'): must_die=sys.exc_info()
            else: must_die = SystemExit, v, sys.exc_info()[2]
            response.exception(must_die)
        except ImportError, v:
            if type(v) is type(()) and len(v)==3: must_die=v
            elif hasattr(sys, 'exc_info'): must_die=sys.exc_info()
            else: must_die = SystemExit, v, sys.exc_info()[2]
            response.exception(1, v)
Exemple #2
0
def publish_module(
    module_name,
    stdin=sys.stdin,
    stdout=sys.stdout,
    stderr=sys.stderr,
    environ=os.environ,
    debug=0,
    request=None,
    response=None,
    extra={},
):
    must_die = 0
    status = 200
    after_list = [None]
    from Response import Response
    from Request import Request
    from Publish import publish

    try:
        try:
            if response is None:
                response = Response(stdout=stdout, stderr=stderr)
            else:
                stdout = response.stdout
            if request is None:
                request = Request(stdin, environ, response)
                # make sure that the request we hand over has the
                # default layer/skin set on it; subsequent code that
                # wants to look up views will likely depend on it
                from zope.app.publication.browser import setDefaultSkin

                setDefaultSkin(request)

            for k, v in extra.items():
                request[k] = v
            response = publish(request, module_name, after_list, debug=debug)
        except SystemExit, v:
            must_die = sys.exc_info()
            response.exception(must_die)
        except ImportError, v:
            if isinstance(v, TupleType) and len(v) == 3:
                must_die = v
            else:
                must_die = sys.exc_info()
            response.exception(1, v)
Exemple #3
0
def publish_module(module_name,
                   stdin=sys.stdin,
                   stdout=sys.stdout,
                   stderr=sys.stderr,
                   environ=os.environ,
                   debug=0,
                   request=None,
                   response=None,
                   extra={}):
    must_die = 0
    status = 200
    after_list = [None]
    from Response import Response
    from Request import Request
    from Publish import publish
    try:
        try:
            if response is None:
                response = Response(stdout=stdout, stderr=stderr)
            else:
                stdout = response.stdout
            if request is None:
                request = Request(stdin, environ, response)
                # make sure that the request we hand over has the
                # default layer/skin set on it; subsequent code that
                # wants to look up views will likely depend on it
                from zope.publisher.browser import setDefaultSkin
                setDefaultSkin(request)

            for k, v in extra.items():
                request[k] = v
            response = publish(request, module_name, after_list, debug=debug)
        except SystemExit, v:
            must_die = sys.exc_info()
            response.exception(must_die)
        except ImportError, v:
            if isinstance(v, TupleType) and len(v) == 3: must_die = v
            else: must_die = sys.exc_info()
            response.exception(1, v)