From 55d145789580f626b9f39a93f84e495ad3e437e9 Mon Sep 17 00:00:00 2001 From: "Nikita P. Shupeyko" Date: Sun, 10 Jun 2018 21:24:18 +0300 Subject: [PATCH] Flower client authentication --- hooks/post_gen_project.py | 52 ++++++++++++++++--- .../.envs/.local/.django | 7 +++ .../compose/local/django/celery/flower/start | 6 ++- 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index 6b48471e5..a63b64a16 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -162,8 +162,12 @@ def set_django_admin_url(file_path): return django_admin_url +def generate_random_user(): + return generate_random_string(length=32, using_ascii_letters=True) + + def generate_postgres_user(debug=False): - return DEBUG_VALUE if debug else generate_random_string(length=32, using_ascii_letters=True) + return DEBUG_VALUE if debug else generate_random_user() def set_postgres_user(file_path, value): @@ -187,16 +191,47 @@ def set_postgres_password(file_path, value=None): return postgres_password +def set_celery_flower_user(file_path, value): + celery_flower_user = set_flag( + file_path, + "!!!SET CELERY_FLOWER_USER!!!", + value=value, + ) + return celery_flower_user + + +def set_celery_flower_password(file_path, value=None): + celery_flower_password = set_flag( + file_path, + "!!!SET CELERY_FLOWER_PASSWORD!!!", + value=value, + length=64, + using_digits=True, + using_ascii_letters=True, + ) + return celery_flower_password + + def append_to_gitignore_file(s): with open(".gitignore", "a") as gitignore_file: gitignore_file.write(s) gitignore_file.write(os.linesep) -def set_flags_in_envs(postgres_user, debug=False): +def set_flags_in_envs( + postgres_user, + celery_flower_user, + debug=False, +): + password = DEBUG_VALUE if debug else None + + local_django_envs_path = os.path.join(".envs", ".local", ".django") + set_celery_flower_user(local_django_envs_path, value=celery_flower_user) + set_celery_flower_password(local_django_envs_path, value=password) + local_postgres_envs_path = os.path.join(".envs", ".local", ".postgres") set_postgres_user(local_postgres_envs_path, value=postgres_user) - set_postgres_password(local_postgres_envs_path, value=DEBUG_VALUE if debug else None) + set_postgres_password(local_postgres_envs_path, value=password) production_django_envs_path = os.path.join(".envs", ".production", ".django") set_django_secret_key(production_django_envs_path) @@ -204,7 +239,7 @@ def set_flags_in_envs(postgres_user, debug=False): production_postgres_envs_path = os.path.join(".envs", ".production", ".postgres") set_postgres_user(production_postgres_envs_path, value=postgres_user) - set_postgres_password(production_postgres_envs_path, value=DEBUG_VALUE if debug else None) + set_postgres_password(production_postgres_envs_path, value=password) def set_flags_in_settings_files(): @@ -223,8 +258,13 @@ def remove_celery_compose_dirs(): def main(): - postgres_user = generate_postgres_user(debug="{{ cookiecutter.debug }}".lower() == "y") - set_flags_in_envs(postgres_user, debug="{{ cookiecutter.debug }}".lower() == "y") + debug = "{{ cookiecutter.debug }}".lower() == "y" + + set_flags_in_envs( + DEBUG_VALUE if debug else generate_random_user(), + DEBUG_VALUE if debug else generate_random_user(), + debug=debug, + ) set_flags_in_settings_files() if "{{ cookiecutter.open_source_license }}" == "Not open source": diff --git a/{{cookiecutter.project_slug}}/.envs/.local/.django b/{{cookiecutter.project_slug}}/.envs/.local/.django index 8aa9a9946..eed8562b2 100644 --- a/{{cookiecutter.project_slug}}/.envs/.local/.django +++ b/{{cookiecutter.project_slug}}/.envs/.local/.django @@ -5,3 +5,10 @@ USE_DOCKER=yes # Redis # ------------------------------------------------------------------------------ REDIS_URL=redis://redis:6379/0 +{% if cookiecutter.use_celery == 'y' %} +# Celery +# ------------------------------------------------------------------------------ +# Flower +CELERY_FLOWER_USER=!!!SET CELERY_FLOWER_USER!!! +CELERY_FLOWER_PASSWORD=!!!SET CELERY_FLOWER_PASSWORD!!! +{% endif %} diff --git a/{{cookiecutter.project_slug}}/compose/local/django/celery/flower/start b/{{cookiecutter.project_slug}}/compose/local/django/celery/flower/start index 43ff77312..05ac2054b 100644 --- a/{{cookiecutter.project_slug}}/compose/local/django/celery/flower/start +++ b/{{cookiecutter.project_slug}}/compose/local/django/celery/flower/start @@ -2,7 +2,9 @@ set -o errexit set -o nounset -set -o xtrace -celery flower -A {{cookiecutter.project_slug}}.taskapp --broker="${CELERY_BROKER_URL}" +celery flower \ + --app {{cookiecutter.project_slug}}.taskapp \ + --broker="${CELERY_BROKER_URL}" \ + --basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}"