diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-04 15:08:26 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-04 15:08:26 (GMT) |
commit | 4e86d38734b8d9fa03e1bd77be5831c8043b8895 (patch) | |
tree | 82a132365054a36ec7bfd03f8f9f3f12f2fd997f | |
parent | a5acb781e13b17147d9859acd49bfd04c61a7748 (diff) |
Create WSGI application() function
-rw-r--r-- | restful_document/__init__.py | 2 | ||||
-rw-r--r-- | restful_document/server.py | 40 |
2 files changed, 40 insertions, 2 deletions
diff --git a/restful_document/__init__.py b/restful_document/__init__.py index b084e63..7c40f2b 100644 --- a/restful_document/__init__.py +++ b/restful_document/__init__.py @@ -23,7 +23,7 @@ from restful_document.router import \ Router from restful_document.server import \ - Server + Server, application from restful_document.user import \ User diff --git a/restful_document/server.py b/restful_document/server.py index 321079f..8d7206b 100644 --- a/restful_document/server.py +++ b/restful_document/server.py @@ -32,6 +32,44 @@ util = ad.util from restful_document import env, printf +_LOGFILE_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s' + + +def application(name, documents): + """Create WSGI application. + + :param name: + id string to use for cases like configure file names + :param documents: + list of document classes, inherited from + `restful_document.Document`, to serve + :returns: + object that can be used as WSGI `application()` function + + """ + util.Option.seek('active-document', ad.env) + util.Option.seek('main', env) + util.Option.merge(None, + ['/etc/%s.conf' % name, '~/.config/%s/config' % name]) + + if not env.debug.value: + logging_level = logging.WARNING + elif env.debug.value == 1: + logging_level = logging.INFO + else: + logging_level = logging.DEBUG + logging.basicConfig(level=logging_level, format=_LOGFILE_FORMAT) + + if env.master.value: + node = ad.Master(documents) + else: + node = ad.Node(documents) + + atexit.register(node.close) + + return rd.Router(node) + + class Server(object): """Serve active_document documents from WSGI server.""" @@ -119,7 +157,7 @@ class Server(object): logging_level = logging.INFO else: logging_level = logging.DEBUG - logging_format = '%(asctime)s %(levelname)s %(name)s: %(message)s' + logging_format = _LOGFILE_FORMAT if env.foreground.value or command not in ['start']: logging_format = '-- %s' % logging_format logging.basicConfig(level=logging_level, format=logging_format) |