From e9fbce0da74e08e3dae9edcc5d424683115ea818 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 31 Jul 2022 15:48:47 +0200 Subject: [PATCH] [cli] Added install command to install the database and all plugins Signed-off-by: Ferdinand Thiessen --- README.md | 9 ++++++++- flaschengeist/alembic/__init__.py | 4 ++++ flaschengeist/cli/__init__.py | 2 ++ flaschengeist/cli/install_cmd.py | 20 ++++++++++++++++++++ flaschengeist/plugins/users/__init__.py | 2 +- 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 flaschengeist/cli/install_cmd.py diff --git a/README.md b/README.md index 1cd3901..320bed5 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,16 @@ If not you need to create user and database manually do (or similar on Windows): ) | sudo mysql Then you can install the database tables, this will update all tables from core + all enabled plugins. -*Hint:* The same command can be later used to upgrade the database after plugins or core are updated. +And also install all enabled plugins: + + $ flaschengeist install + +*Hint:* To only install the database tables, or upgrade the database after plugins or core are updated later +you can use this command: $ flaschengeist db upgrade heads + ## Plugins To only upgrade one plugin (for example the `events` plugin): @@ -88,6 +94,7 @@ with the difference of the main logger will be forced to output to `stderr` and of the CLI will override the logging level you have configured for the main logger. $ flaschengeist run + or with debug messages: $ flaschengeist run --debug diff --git a/flaschengeist/alembic/__init__.py b/flaschengeist/alembic/__init__.py index e69de29..cf71018 100644 --- a/flaschengeist/alembic/__init__.py +++ b/flaschengeist/alembic/__init__.py @@ -0,0 +1,4 @@ +from pathlib import Path + + +alembic_migrations = str(Path(__file__).resolve().parent / "migrations") diff --git a/flaschengeist/cli/__init__.py b/flaschengeist/cli/__init__.py index ed93b5d..49e3333 100644 --- a/flaschengeist/cli/__init__.py +++ b/flaschengeist/cli/__init__.py @@ -88,12 +88,14 @@ def main(*args, **kwargs): from .export_cmd import export from .docs_cmd import docs from .run_cmd import run + from .install_cmd import install # Override logging level environ.setdefault("FG_LOGGING", logging.getLevelName(LOGGING_MAX)) cli.add_command(export) cli.add_command(docs) + cli.add_command(install) cli.add_command(plugin) cli.add_command(run) cli(*args, **kwargs) diff --git a/flaschengeist/cli/install_cmd.py b/flaschengeist/cli/install_cmd.py new file mode 100644 index 0000000..3d1b1ff --- /dev/null +++ b/flaschengeist/cli/install_cmd.py @@ -0,0 +1,20 @@ +import click +from click.decorators import pass_context +from flask.cli import with_appcontext +from flask_migrate import upgrade + +from flaschengeist.alembic import alembic_migrations +from flaschengeist.cli.plugin_cmd import install_plugin_command +from flaschengeist.utils.hook import Hook + + +@click.command() +@with_appcontext +@pass_context +@Hook("plugins.installed") +def install(ctx): + # Install database + upgrade(alembic_migrations, revision="heads") + + # Install plugins + install_plugin_command(ctx, [], True) diff --git a/flaschengeist/plugins/users/__init__.py b/flaschengeist/plugins/users/__init__.py index a76c009..dc64c4b 100644 --- a/flaschengeist/plugins/users/__init__.py +++ b/flaschengeist/plugins/users/__init__.py @@ -105,7 +105,7 @@ def frontend(userid, current_session): raise Forbidden if request.method == "POST": - if request.content_length > 1024**2: + if request.content_length > 1024 ** 2: raise BadRequest current_session.user_.set_attribute("frontend", request.get_json()) return no_content()