Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-03-04 15:08:26 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-03-04 15:08:26 (GMT)
commit4e86d38734b8d9fa03e1bd77be5831c8043b8895 (patch)
tree82a132365054a36ec7bfd03f8f9f3f12f2fd997f
parenta5acb781e13b17147d9859acd49bfd04c61a7748 (diff)
Create WSGI application() function
-rw-r--r--restful_document/__init__.py2
-rw-r--r--restful_document/server.py40
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)