From bf7b5061e99cefc11a079fe3b8940a578479cdf5 Mon Sep 17 00:00:00 2001 From: Josh Washburne Date: Thu, 28 Dec 2017 10:10:39 -0500 Subject: [PATCH] Automatically create DJ user at initial migration. --- .gitignore | 7 +++- .../core/migrations/0002_create_dj_user.py | 39 +++++++++++++++++++ .../savepointradio/settings/base.py | 12 ++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 savepointradio/core/migrations/0002_create_dj_user.py diff --git a/.gitignore b/.gitignore index 6dd8334..9049e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ __pycache__/ # Distribution / packaging .Python .venv/ -.env build/ develop-eggs/ dist/ @@ -42,4 +41,8 @@ docs/_build/ # IDE customizations .vscode/ -requirements-dev.txt \ No newline at end of file +requirements-dev.txt + +# Sensitive information +.env +.djinfo diff --git a/savepointradio/core/migrations/0002_create_dj_user.py b/savepointradio/core/migrations/0002_create_dj_user.py new file mode 100644 index 0000000..067b1c1 --- /dev/null +++ b/savepointradio/core/migrations/0002_create_dj_user.py @@ -0,0 +1,39 @@ +# Generated by Django 2.0 on 2017-12-27 21:22 + +import os + +from django.conf import settings +from django.contrib.auth.hashers import make_password +from django.db import migrations, models + +from core.utils import generate_password + + +def create_dj_user(apps, schema_editor): + User = apps.get_model('core', 'RadioUser') + db_alias = schema_editor.connection.alias + + new_password = generate_password() + dj = User(email=settings.RADIO_DJ_EMAIL, + name=settings.RADIO_DJ_NAME, + password=make_password(new_password), + is_superuser=False, + is_staff=True, + is_dj=True) + dj.save(using=db_alias) + + with open(os.path.join(settings.PROJECT_DIR, '.djinfo'), 'w') as f: + f.write('Email: {}\n'.format(dj.email)) + f.write('Name: {}\n'.format(dj.name)) + f.write('Password: {}\n'.format(new_password)) + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0001_initial'), + ] + + operations = [ + migrations.RunPython(create_dj_user), + ] diff --git a/savepointradio/savepointradio/settings/base.py b/savepointradio/savepointradio/settings/base.py index cc6b127..05d6022 100644 --- a/savepointradio/savepointradio/settings/base.py +++ b/savepointradio/savepointradio/settings/base.py @@ -8,6 +8,10 @@ CONFIG_DIR = os.path.dirname(SETTINGS_DIR) PROJECT_DIR = os.path.dirname(CONFIG_DIR) BASE_DIR = os.path.dirname(PROJECT_DIR) +### +### Django-specific settings +### + AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', @@ -83,3 +87,11 @@ USE_L10N = True USE_TZ = True WSGI_APPLICATION = 'savepointradio.wsgi.application' + +### +### Radio-specific settings +### + +RADIO_DJ_EMAIL = config('RADIO_DJ_EMAIL', default='dj@radiostation.net') + +RADIO_DJ_NAME = config('RADIO_DJ_NAME', default='DJ Reinhardt') \ No newline at end of file