changeset 897:b4156f5d4368

wsgi: Add admin panel to WSGI helpers.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 08 Jul 2017 22:01:00 -0700
parents 85d2b386b971
children 98becbc75ccc
files piecrust/admin/wsgiutil.py piecrust/wsgiutil/__init__.py piecrust/wsgiutil/cwdadminapp.py
diffstat 3 files changed, 46 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/admin/wsgiutil.py	Sat Jul 08 21:44:03 2017 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-import logging
-
-
-logger = logging.getLogger()
-
-
-def get_wsgi_app(admin_root=None, log_file=None,
-                 max_log_bytes=4096, log_backup_count=0,
-                 log_level=logging.INFO):
-    if log_file:
-        from logging.handlers import RotatingFileHandler
-        handler = RotatingFileHandler(log_file, maxBytes=max_log_bytes,
-                                      backupCount=log_backup_count)
-        handler.setLevel(log_level)
-        logging.getLogger().addHandler(handler)
-
-    logger.debug("Creating WSGI application.")
-    es = {}
-    if admin_root:
-        es['FOODTRUCK_ROOT'] = admin_root
-    from .web import create_foodtruck_app
-    app = create_foodtruck_app(es)
-    return app
-
--- a/piecrust/wsgiutil/__init__.py	Sat Jul 08 21:44:03 2017 -0700
+++ b/piecrust/wsgiutil/__init__.py	Sat Jul 08 22:01:00 2017 -0700
@@ -1,9 +1,41 @@
+import logging
 from piecrust.serving.server import WsgiServer
 
 
-def get_app(root_dir, cache_key='prod', enable_debug_info=False):
+def _setup_logging(log_file, log_level, max_log_bytes, log_backup_count):
+    if log_file:
+        from logging.handlers import RotatingFileHandler
+        handler = RotatingFileHandler(log_file, maxBytes=max_log_bytes,
+                                      backupCount=log_backup_count)
+        handler.setLevel(log_level)
+        logging.getLogger().addHandler(handler)
+
+
+def get_app(root_dir, *,
+            cache_key='prod',
+            enable_debug_info=False,
+            log_file=None,
+            log_level=logging.INFO,
+            log_backup_count=0,
+            max_log_bytes=4096):
+    _setup_logging(log_file, log_level, max_log_bytes, log_backup_count)
     app = WsgiServer(root_dir,
                      cache_key=cache_key,
                      enable_debug_info=enable_debug_info)
     return app
 
+
+def get_admin_app(root_dir, *,
+                  url_prefix='pc-admin',
+                  log_file=None,
+                  log_level=logging.INFO,
+                  log_backup_count=0,
+                  max_log_bytes=4096):
+    _setup_logging(log_file, log_level, max_log_bytes, log_backup_count)
+    es = {
+        'FOODTRUCK_ROOT': root_dir,
+        'FOODTRUCK_URL_PREFIX': url_prefix}
+    from piecrust.admin.web import create_foodtruck_app
+    app = create_foodtruck_app(es)
+    return app
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/piecrust/wsgiutil/cwdadminapp.py	Sat Jul 08 22:01:00 2017 -0700
@@ -0,0 +1,13 @@
+# This is a utility module that can be used with any WSGI-compatible server
+# like Werkzeug or Gunicorn. It returns a WSGI app for serving a PieCrust
+# administration panel located in the current working directory.
+import os
+from piecrust.wsgiutil import get_admin_app
+
+
+root_dir = os.getcwd()
+app = get_admin_app(root_dir)
+# Add this for `mod_wsgi`.
+application = app
+
+