From 8e8414c3fe4e12d93536ce84ff78303690cd9da7 Mon Sep 17 00:00:00 2001 From: Stanislav Khlud Date: Thu, 5 Sep 2024 09:30:35 +0700 Subject: [PATCH] Make `django.createsuperuser` try to grab username and email from git config --- CHANGELOG.md | 2 ++ README.md | 6 ++++-- saritasa_invocations/django.py | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index effcbeb..d13c7c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ We follow [Semantic Versions](https://semver.org/). ## unreleased +- Make `django.createsuperuser` try to grab username and email from git config + ## 1.2.1 - Restore check for main containers in `docker.up` diff --git a/README.md b/README.md index d68ceb4..81f1a2e 100644 --- a/README.md +++ b/README.md @@ -462,8 +462,10 @@ Create superuser. Settings: -* `default_superuser_email` default email of superuser (Default: `root@localhost`) -* `default_superuser_username` default username of superuser (Default: `root`) +* `default_superuser_email` default email of superuser. +if empty, will try to grab it from git config, before resorting to default (Default: `root@localhost`) +* `default_superuser_username` default username of superuser +if empty, will try to grab it from git config, before resorting to default (Default: `root`) * `default_superuser_password` default password of superuser (Default: `root`) * `verbose_email_name` verbose name for `email` field (Default: `Email address`) * `verbose_username_name` verbose name for `username` field (Default: `Username`) diff --git a/saritasa_invocations/django.py b/saritasa_invocations/django.py index a35511a..5f354e7 100644 --- a/saritasa_invocations/django.py +++ b/saritasa_invocations/django.py @@ -1,4 +1,5 @@ import collections.abc +import contextlib import os import pathlib @@ -148,11 +149,29 @@ def createsuperuser( """Create superuser.""" printing.print_success("Django: Create superuser") config = _config.Config.from_context(context) + if not email: + with contextlib.suppress(invoke.Failure): + output = context.run( + "git config user.email", + echo=False, + hide="out", + ) + if output: + email = output.stdout.replace(" ", "") responder_email = invoke.FailingResponder( pattern=rf"{config.django.verbose_email_name}.*: ", response=(email or config.django.default_superuser_email) + "\n", sentinel="That Email address is already taken.", ) + if not username: + with contextlib.suppress(invoke.Failure): + output = context.run( + "git config user.name", + echo=False, + hide="out", + ) + if output: + username = output.stdout.replace(" ", "") responder_user_name = invoke.Responder( pattern=rf"{config.django.verbose_username_name}.*: ", response=(username or config.django.default_superuser_username) + "\n",