diff piecrust/commands/builtin/admin.py @ 917:33a89139c284

serve: Add `--admin` option to run the administration panel. - Removed the `admin run` command. - Cleaned up middlewares a bit.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 29 Sep 2017 08:42:38 -0700
parents dcdec4b951a1
children
line wrap: on
line diff
--- a/piecrust/commands/builtin/admin.py	Wed Sep 27 19:07:55 2017 -0700
+++ b/piecrust/commands/builtin/admin.py	Fri Sep 29 08:42:38 2017 -0700
@@ -1,7 +1,7 @@
 import os
 import os.path
 import logging
-from piecrust import CACHE_DIR, CONFIG_PATH
+from piecrust import CONFIG_PATH
 from piecrust.commands.base import ChefCommand
 from piecrust.pathutil import SiteNotFoundError
 
@@ -24,39 +24,6 @@
             help="Creates a new administration panel website.")
         p.set_defaults(sub_func=self._initAdminSite)
 
-        p = subparsers.add_parser(
-            'genpass',
-            help=("Generates the hashed password for use as an "
-                  "admin password"))
-        p.add_argument('password', help="The password to hash.")
-        p.set_defaults(sub_func=self._generatePassword)
-
-        p = subparsers.add_parser(
-            'run',
-            help="Runs the administrative panel website.")
-        p.add_argument(
-            '-p', '--port',
-            help="The port for the administrative panel website.",
-            default=8090)
-        p.add_argument(
-            '-a', '--address',
-            help="The host for the administrative panel website.",
-            default='localhost')
-        p.add_argument(
-            '--no-assets',
-            help="Don't process and monitor the asset folder(s).",
-            dest='monitor_assets',
-            action='store_false')
-        p.add_argument(
-            '--use-reloader',
-            help="Restart the server when PieCrust code changes",
-            action='store_true')
-        p.add_argument(
-            '--use-debugger',
-            help="Show the debugger when an error occurs",
-            action='store_true')
-        p.set_defaults(sub_func=self._runAdminSite)
-
     def checkedRun(self, ctx):
         if ctx.app.root_dir is None:
             raise SiteNotFoundError(theme=ctx.app.theme_site)
@@ -66,33 +33,6 @@
             return
         return ctx.args.sub_func(ctx)
 
-    def _runAdminSite(self, ctx):
-        # See `_run_sse_check` in `piecrust.serving.wrappers` for an
-        # explanation of this check.
-        if (ctx.args.monitor_assets and (
-                not (ctx.args.debug or ctx.args.use_reloader) or
-                os.environ.get('WERKZEUG_RUN_MAIN') == 'true')):
-            from piecrust.serving.procloop import ProcessingLoop
-            out_dir = os.path.join(
-                ctx.app.root_dir, CACHE_DIR, 'admin', 'server')
-            proc_loop = ProcessingLoop(ctx.appfactory, out_dir)
-            proc_loop.start()
-
-        es = {
-            'FOODTRUCK_CMDLINE_MODE': True,
-            'FOODTRUCK_ROOT': ctx.app.root_dir,
-            'FOODTRUCK_URL_PREFIX': '',
-            'SECRET_KEY': os.urandom(22),
-            'LOGIN_DISABLED': True}
-        if ctx.args.debug or ctx.args.use_debugger:
-            es['DEBUG'] = True
-
-        run_foodtruck(
-            host=ctx.args.address,
-            port=ctx.args.port,
-            use_reloader=ctx.args.use_reloader,
-            extra_settings=es)
-
     def _initAdminSite(self, ctx):
         import io
         import getpass
@@ -138,30 +78,3 @@
         hashpw = bcrypt.hashpw(binpw, bcrypt.gensalt()).decode('utf8')
         logger.info(hashpw)
 
-
-def run_foodtruck(host=None, port=None, use_reloader=False,
-                  extra_settings=None):
-    es = {}
-    if extra_settings:
-        es.update(extra_settings)
-
-    # Disable PIN protection with Werkzeug's debugger.
-    os.environ['WERKZEUG_DEBUG_PIN'] = 'off'
-
-    try:
-        from piecrust.admin.web import create_foodtruck_app
-        app = create_foodtruck_app(es)
-        app.run(host=host, port=port, use_reloader=use_reloader,
-                threaded=True)
-    except SystemExit:
-        # This is needed for Werkzeug's code reloader to be able to correctly
-        # shutdown the child process in order to restart it (otherwise, SSE
-        # generators will keep it alive).
-        try:
-            from . import pubutil
-            logger.debug("Shutting down SSE generators from main...")
-            pubutil.server_shutdown = True
-        except ImportError:
-            pass
-        raise
-