Mercurial > piecrust2
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 -