aymaneMx / django-extra-settings

config and manage typed extra settings using just the django admin. :gear:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

django-extra-settings

config and manage typed extra settings using just the django admin.

Installation

  • Run pip install django-extra-settings
  • Add extra_settings to settings.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.

# 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 type list filter will be shown in the admin changelist
EXTRA_SETTINGS_SHOW_TYPE_LIST_FILTER = False

Admin

Just go to the admin where you can:

  • Create a new setting
  • Update an existing setting
  • Delete an existing setting

Python

You can create, read, update and delete settings programmatically:

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()

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

Templates

You can retrieve settings in templates:

{% load extra_settings %}

{% get_setting 'SETTING_NAME' default='django-extra-settings' %}

Testing

# create python virtual environment
virtualenv testing_django_extra_settings

# activate virtualenv
cd testing_django_extra_settings && . bin/activate

# clone repo
git clone https://github.com/fabiocaccamo/django-extra-settings.git src && cd src

# install dependencies
pip install -r requirements.txt
pip install -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.


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. ๐ŸงŸโ€โ™‚๏ธ

About

config and manage typed extra settings using just the django admin. :gear:

License:MIT License


Languages

Language:Python 96.4%Language:JavaScript 3.1%Language:CSS 0.5%