django_dumpdata, django_loaddata: new modules (#10726)
Some checks failed
EOL CI / EOL Sanity (Ⓐ2.16) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py2.7) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py3.11) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py3.6) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/3/) (push) Has been cancelled
nox / Run extra sanity tests (push) Has been cancelled

* django module, module_utils: adjustments

* more fixes

* more fixes

* further simplification

* django_dumpdata/django_loaddata: new modules

* Update plugins/modules/django_dumpdata.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* add note about idempotency

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Alexei Znamensky 2025-09-04 07:49:11 +12:00 committed by GitHub
commit d0123a1038
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 364 additions and 4 deletions

View file

@ -23,18 +23,40 @@ django_std_args = dict(
verbosity=dict(type="int", choices=[0, 1, 2, 3]),
skip_checks=dict(type="bool"),
)
_database_dash = dict(
database=dict(type="str", default="default"),
)
_data = dict(
excludes=dict(type="list", elements="str"),
format=dict(type="str", default="json", choices=["xml", "json", "jsonl", "yaml"]),
)
_pks = dict(
primary_keys=dict(type="list", elements="str"),
)
_django_std_arg_fmts = dict(
all=cmd_runner_fmt.as_bool("--all"),
app=cmd_runner_fmt.as_opt_val("--app"),
apps=cmd_runner_fmt.as_list(),
apps_models=cmd_runner_fmt.as_list(),
check=cmd_runner_fmt.as_bool("--check"),
command=cmd_runner_fmt.as_list(),
database_dash=cmd_runner_fmt.as_opt_eq_val("--database"),
database_stacked_dash=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--database"),
deploy=cmd_runner_fmt.as_bool("--deploy"),
dry_run=cmd_runner_fmt.as_bool("--dry-run"),
excludes=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("--exclude"),
fail_level=cmd_runner_fmt.as_opt_val("--fail-level"),
fixture=cmd_runner_fmt.as_opt_val("--output"),
fixtures=cmd_runner_fmt.as_list(),
format=cmd_runner_fmt.as_opt_val("--format"),
ignore_non_existent=cmd_runner_fmt.as_bool("--ignorenonexistent"),
indent=cmd_runner_fmt.as_opt_val("--indent"),
natural_foreign=cmd_runner_fmt.as_bool("--natural-foreign"),
natural_primary=cmd_runner_fmt.as_bool("--natural-primary"),
no_color=cmd_runner_fmt.as_fixed("--no-color"),
noinput=cmd_runner_fmt.as_fixed("--noinput"),
primary_keys=lambda v: ["--pks", ",".join(v)],
pythonpath=cmd_runner_fmt.as_opt_eq_val("--pythonpath"),
settings=cmd_runner_fmt.as_opt_eq_val("--settings"),
skip_checks=cmd_runner_fmt.as_bool("--skip-checks"),
@ -44,10 +66,7 @@ _django_std_arg_fmts = dict(
version=cmd_runner_fmt.as_fixed("--version"),
)
_database_dash = dict(
database=dict(type="str", default="default"),
)
# keys can be used in _django_args
_args_menu = dict(
std=(django_std_args, _django_std_arg_fmts),
database=(_database_dash, {"database": _django_std_arg_fmts["database_dash"]}), # deprecate, remove in 13.0.0
@ -55,6 +74,7 @@ _args_menu = dict(
dry_run=({}, {"dry_run": cmd_runner_fmt.as_bool("--dry-run")}), # deprecate, remove in 13.0.0
check=({}, {"check": cmd_runner_fmt.as_bool("--check")}), # deprecate, remove in 13.0.0
database_dash=(_database_dash, {}),
data=(_data, {}),
)