mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-09-27 19:59:02 +00:00
feat: add do sqlshell
command
An optional `--db=openedx` argument can be passed to the job command. This should close https://github.com/openedx/wg-developer-experience/issues/51
This commit is contained in:
parent
6257c1c7ac
commit
19016b8ab1
@ -1,3 +1,4 @@
|
||||
- [Feature] Make it possible to import the demo course from a different git repository or version. (by @regisb)
|
||||
- [Feature] Add a convenient `do print-edx-platform-setting` command to print the value of an edx-platform setting. (by @regisb)
|
||||
- [Improvement] Improve edx-platform logging by silencing a couple deprecation warnings. (by @regisb)
|
||||
- [Feature] Add a convenient `do sqlshell` command to enter a SQL shell as root. (by @regisb)
|
||||
|
@ -10,7 +10,7 @@ import click
|
||||
from typing_extensions import ParamSpec
|
||||
|
||||
from tutor import config as tutor_config
|
||||
from tutor import env, fmt, hooks
|
||||
from tutor import env, fmt, hooks, utils
|
||||
from tutor.hooks import priorities
|
||||
|
||||
|
||||
@ -165,6 +165,26 @@ python ./manage.py cms import ../data /tmp/course
|
||||
yield ("cms", template)
|
||||
|
||||
|
||||
@click.command(
|
||||
name="print-edx-platform-setting",
|
||||
help="Print the value of an edx-platform Django setting.",
|
||||
)
|
||||
@click.argument("setting")
|
||||
@click.option(
|
||||
"-s",
|
||||
"--service",
|
||||
type=click.Choice(["lms", "cms"]),
|
||||
default="lms",
|
||||
show_default=True,
|
||||
help="Service to fetch the setting from",
|
||||
)
|
||||
def print_edx_platform_setting(
|
||||
setting: str, service: str
|
||||
) -> t.Iterable[tuple[str, str]]:
|
||||
command = f"./manage.py {service} shell -c 'from django.conf import settings; print(settings.{setting})'"
|
||||
yield (service, command)
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option(
|
||||
"-d",
|
||||
@ -222,24 +242,19 @@ def assign_theme(name, domain):
|
||||
return f'./manage.py lms shell -c "{python_command}"'
|
||||
|
||||
|
||||
@click.command(
|
||||
name="print-edx-platform-setting",
|
||||
help="Print the value of an edx-platform Django setting.",
|
||||
)
|
||||
@click.argument("setting")
|
||||
@click.option(
|
||||
"-s",
|
||||
"--service",
|
||||
type=click.Choice(["lms", "cms"]),
|
||||
default="lms",
|
||||
show_default=True,
|
||||
help="Service to fetch the setting from",
|
||||
)
|
||||
def print_edx_platform_setting(
|
||||
setting: str, service: str
|
||||
) -> t.Iterable[tuple[str, str]]:
|
||||
command = f"./manage.py {service} shell -c 'from django.conf import settings; print(settings.{setting})'"
|
||||
yield (service, command)
|
||||
@click.command(context_settings={"ignore_unknown_options": True})
|
||||
@click.argument("args", nargs=-1)
|
||||
def sqlshell(args: list[str]) -> t.Iterable[tuple[str, str]]:
|
||||
"""
|
||||
Open an SQL shell as root
|
||||
|
||||
Extra arguments will be passed to the `mysql` command verbatim. For instance, to
|
||||
show tables from the "openedx" database, run `do sqlshell openedx -e 'show tables'`.
|
||||
"""
|
||||
command = "mysql --user={{ MYSQL_ROOT_USERNAME }} --password={{ MYSQL_ROOT_PASSWORD }} --host={{ MYSQL_HOST }} --port={{ MYSQL_PORT }}"
|
||||
if args:
|
||||
command += " " + utils._shlex_join(*args) # pylint: disable=protected-access
|
||||
yield ("lms", command)
|
||||
|
||||
|
||||
def add_job_commands(do_command_group: click.Group) -> None:
|
||||
@ -322,5 +337,6 @@ hooks.Filters.CLI_DO_COMMANDS.add_items(
|
||||
initialise,
|
||||
print_edx_platform_setting,
|
||||
settheme,
|
||||
sqlshell,
|
||||
]
|
||||
)
|
||||
|
@ -113,7 +113,7 @@ FROM minimal as production
|
||||
|
||||
# Install system requirements
|
||||
RUN apt update && \
|
||||
apt install -y gettext gfortran graphviz graphviz-dev libffi-dev libfreetype6-dev libgeos-dev libjpeg8-dev liblapack-dev libmysqlclient-dev libpng-dev libsqlite3-dev libxmlsec1-dev lynx ntp pkg-config rdfind && \
|
||||
apt install -y gettext gfortran graphviz graphviz-dev libffi-dev libfreetype6-dev libgeos-dev libjpeg8-dev liblapack-dev libmysqlclient-dev libpng-dev libsqlite3-dev libxmlsec1-dev lynx mysql-client ntp pkg-config rdfind && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# From then on, run as unprivileged "app" user
|
||||
|
Loading…
Reference in New Issue
Block a user