django-settings-custom
A Django interactive command for configuration file generation.
Getting It
pip install django-settings-custom
Installing It
To enable django_settings_custom in your project you need to add it to INSTALLED_APPS in your projects
settings.py file:
INSTALLED_APPS = (
...
'django_settings_custom',
...
)
Using It
Create a template for your target conf.ini like
[DATABASE]
NAME = { USER_VALUE }
HOST = { USER_VALUE }
PORT = { USER_VALUE }
[DATABASE_CREDENTIALS]
USER = { USER_VALUE }
PASSWORD = { ENCRYPTED_USER_VALUE }
[DJANGO]
KEY = { DJANGO_SECRET_KEY }
# A constant field
[LDAP]
LDAPGRP = 'ldaps://myldap'
Add settings.py file
SETTINGS_TEMPLATE_FILE = 'PATH_TO_YOUR_TEMPLATE_CONFIGURATION_FILE'
SETTINGS_FILE_PATH = 'TARGET_FOR_CONFIGURATION_FILE'
Launch in command line
python manage.py generate_settings
Results
The command ask user to fill missing values from template:
[user@localhost a_project]$ ./manage.py generate_conf
** Configuration file generation: **
** Configuration file generation: **
Do you want to generate the secret key for Django ? (Y/n) : y
Django secret key generated
** Enter values for configuration file content **
Value for [DATABASE] NAME: database_name
Value for [DATABASE] HOST: database_host
Value for [DATABASE] PORT: 900
Value for [DATABASE_CREDENTIALS] USER: my_user
Value for [DATABASE_CREDENTIALS] PASSWORD (will be encrypted): my_pass
Writing file at /home/user/a_project/conf.ini:
Configuration file successfully generated.
[user@localhost a_project]$
It generates the file /home/user/a_project/conf.ini:
[DATABASE]
NAME = database_name
HOST = database_host
PORT = 900
[DATABASE_CREDENTIALS]
USER = my_user
PASSWORD = JbAwLj5Zwz8lMrvcUZq5sP/v6eaUFY5E7U8Fmg63vxI=
# A constant field
[LDAP]
LDAPGRP = 'ldaps://monldap'
[DJANGO]
KEY = w)r13ne4=id9_8xdojir)3)%%5m3r$co#jwj_)4d*_%%!0+f#sro
Customization
Don't use Django settings
If you want add variables to your Django settings file, you can inherit generate_settings.Command to specify command options :
from django_settings_custom.management.commands import generate_settings
class Command(generate_settings.Command):
settings_template_file = 'The/settings/template/file_path.ini'
settings_file_path = 'The/target/settings/file_path.ini'
Adding custom tag
To add a custom tag, you can inherit generate_settings.Command and override the method get_value :
import random
from django_settings_custom.management.commands import generate_settings
class Command(generate_settings.Command):
@staticmethod
def get_value(section, key, value_type, secret_key):
if value_type == 'RANDOM_VALUE':
return random.uniform(0, 100)
return super(Command, Command).get_value(section, key, value_type, secret_key)
Or a little more complex example :
from django.core.management.base import CommandError
from django_settings_custom.management.commands import generate_settings
class Command(generate_settings.Command):
@staticmethod
def get_value(section, key, value_type, secret_key):
int_less_10 = value_type == 'INT_LESS_THAN_10'
if int_less_10:
value_type = 'USER_VALUE'
value = super(Command, Command).get_value(section, key, value_type, secret_key)
if int_less_10:
try:
value = int(value)
if value >= 10:
raise CommandError('This field needs an int less than 10.')
except ValueError:
raise CommandError('This field needs an int.')
return value
Metadata
Release files for django-settings-custom 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-settings-custom-1.0.3.tar.gz | 4.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_settings_custom-1.0.3-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / django-settings-custom-1.0.3.tar.gz
| Download URL | django-settings-custom-1.0.3.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f39ffc7c4f4ab70ddee4eeaea8410ec76dc402035b8486fdc6c9cadcb318ba19
|
|
BLAKE2b-256 checksum How to use checksums |
6f323052f8cf440408b5e6dad9b893c88fa3f8cc76a70bd0a1186222a2f54f57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
|
Release files / django_settings_custom-1.0.3-py2.py3-none-any.whl
| Download URL | django_settings_custom-1.0.3-py2.py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7831bd5ff68431caca6f1d65297d5df736a6f2dfc5c969f1a87bd37fae149f3c
|
|
BLAKE2b-256 checksum How to use checksums |
9e934278369bc8090affc06d152286a6c134226a40b85a7d8edd5265a1998f1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
|