easily manage typed extra settings using the django admin.
Project description
django-extra-settings
config and manage typed extra settings using just the django admin.
Installation
- Run
pip install django-extra-settings
- Add
extra_settings
tosettings.INSTALLED_APPS
- Run
python manage.py migrate
- Run
python manage.py collectstatic
- Restart your application server
Usage
Admin
Just go to the admin where you can:
- Create a new setting
- Update an existing setting
- Delete an existing setting
Settings
All these settings are optional, if not defined in settings.py
the default values (listed below) will be used.
# the name of the cache to use, if not found the "default" cache will be used.
EXTRA_SETTINGS_CACHE_NAME = "extra_settings"
# a list of settings that will be available by default, each item must contain "name", "type" and "value".
# check the #types section to see all the supported settings types.
EXTRA_SETTINGS_DEFAULTS = [
{
"name": "SETTING_NAME",
"type": "string",
"value": "Hello World",
},
# ...
]
# if True, settings names will be forced to honor the standard django settings format
EXTRA_SETTINGS_ENFORCE_UPPERCASE_SETTINGS = True
# if True, the template tag will fallback to django.conf.settings,
# very useful to retrieve conf settings such as DEBUG.
EXTRA_SETTINGS_FALLBACK_TO_CONF_SETTINGS = True
# the upload_to path value of settings of type 'file'
EXTRA_SETTINGS_FILE_UPLOAD_TO = "files"
# the upload_to path value of settings of type 'image'
EXTRA_SETTINGS_IMAGE_UPLOAD_TO = "images"
# if True, settings name prefix list filter will be shown in the admin changelist
EXTRA_SETTINGS_SHOW_NAME_PREFIX_LIST_FILTER = False
# if True, settings type list filter will be shown in the admin changelist
EXTRA_SETTINGS_SHOW_TYPE_LIST_FILTER = False
# the package name displayed in the admin
EXTRA_SETTINGS_VERBOSE_NAME = "Settings"
Caching
You can customise the app caching options using settings.CACHES["extra_settings"]
setting, otherwise the "default"
cache will be used:
CACHES = {
# ...
"extra_settings": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"TIMEOUT": 60,
},
# ...
}
By default the "extra_settings"
cache is used, if you want to use another cache you can set it using the EXTRA_SETTINGS_CACHE_NAME
setting.
Python
You can create, read, update and delete settings programmatically:
Types
This is the list of the currently supported setting types you may need to use:
Setting.TYPE_BOOL
Setting.TYPE_DATE
Setting.TYPE_DATETIME
Setting.TYPE_DECIMAL
Setting.TYPE_DURATION
Setting.TYPE_EMAIL
Setting.TYPE_FILE
Setting.TYPE_FLOAT
Setting.TYPE_IMAGE
Setting.TYPE_INT
Setting.TYPE_JSON
Setting.TYPE_STRING
Setting.TYPE_TEXT
Setting.TYPE_TIME
Setting.TYPE_URL
Create
from extra_settings.models import Setting
setting_obj = Setting(
name="SETTING_NAME",
value_type=Setting.TYPE_STRING,
value="django-extra-settings",
)
setting_obj.save()
Read
from extra_settings.models import Setting
value = Setting.get("SETTING_NAME", default="django-extra-settings")
Update
from extra_settings.models import Setting
setting_obj = Setting(
name="SETTING_NAME",
value_type=Setting.TYPE_BOOL,
value=True,
)
setting_obj.value = False
setting_obj.save()
Delete
from extra_settings.models import Setting
Setting.objects.filter(name="SETTING_NAME").delete()
Templates
You can retrieve settings in templates:
{% load extra_settings %}
{% get_setting 'SETTING_NAME' default='django-extra-settings' %}
Tests
You can override specific settings during tests using extra_settings.test.override_settings
.
It can be used both as decorator and as context-manager:
from extra_settings.test import override_settings
# decorator
@override_settings(SETTING_NAME_1="value for testing 1", SETTING_NAME_2="value for testing 2")
def test_with_custom_settings(self):
pass
# context manager
def test_with_custom_settings(self):
with override_settings(SETTING_NAME_1="value for testing 1", SETTING_NAME_2="value for testing 2"):
pass
Testing
# clone repository
git clone https://github.com/fabiocaccamo/django-extra-settings.git && cd django-extra-settings
# create virtualenv and activate it
python -m venv venv && . venv/bin/activate
# upgrade pip
python -m pip install --upgrade pip
# install requirements
pip install -r requirements.txt -r requirements-test.txt
# run tests
tox
# or
python setup.py test
# or
python -m django test --settings "tests.settings"
License
Released under MIT License.
Supporting
- :star: Star this project on GitHub
- :octocat: Follow me on GitHub
- :blue_heart: Follow me on Twitter
- :moneybag: Sponsor me on Github
See also
-
django-admin-interface
- the default admin interface made customizable by the admin itself. popup windows replaced by modals. 🧙 ⚡ -
django-colorfield
- simple color field for models with a nice color-picker in the admin. 🎨 -
django-maintenance-mode
- shows a 503 error page when maintenance-mode is on. 🚧 🛠️ -
django-redirects
- redirects with full control. ↪️ -
django-treenode
- probably the best abstract model / admin for your tree based stuff. 🌳 -
python-benedict
- dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities. 📘 -
python-codicefiscale
- encode/decode Italian fiscal codes - codifica/decodifica del Codice Fiscale. 🇮🇹 💳 -
python-fontbro
- friendly font operations. 🧢 -
python-fsutil
- file-system utilities for lazy devs. 🧟♂️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-extra-settings-0.5.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fed4e3a98543e11fe0c63a1a28b32267bd4dd05a0819d6eaec68b368a4b7a304 |
|
MD5 | 943bffcd3871acc7564c2b2a916ee6b7 |
|
BLAKE2b-256 | 810d9cbb05c42e661518d76bd9eef470f05bd3cd338d0717eea0af5df97935ef |
Hashes for django_extra_settings-0.5.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0d9607d3583115c9b9f55eb858f902712aa6746bc14d6ded97c316ae9d6346a |
|
MD5 | abc413763264181c53f949bcff9d8722 |
|
BLAKE2b-256 | a5a3eb9cf0df1fdcefe684f9ab529a7edd27036f79eaa40b559eb1384f7f3f55 |