Skip to main content

Application settings helper for Django apps.

Project description

Django AppSettings

Application settings helper for Django apps.

Why another app settings app? Because none of the other suited my needs!

This one is simple to use, and works with unit tests overriding settings.

Usage

With recent Django versions, it is recommended to put your settings in an apps.py module of your Django app, though you can put it wherever you want. The following is just an example.

from django.apps import AppConfig
import appsettings as aps

class MyAppConfig(AppConfig):
    name = 'my_app'
    verbose_name = 'My Application'

    def ready(self):
        AppSettings.check()


class AppSettings(aps.AppSettings):
    always_use_ice_cream = aps.BooleanSetting(default=True)
    attr_name = aps.StringSetting(name='SETTING_NAME')

    # if you have complex treatment to do on setting
    complex_setting = aps.Setting(transformer=custom_method, checker=custom_checker)

    # if you need to import a python object (module/class/method)
    imported_object = aps.ImportedObjectSetting(default='app.default.object')

    class Meta:
        setting_prefix = 'ASH'  # settings must be prefixed with ASH

Then in other modules:

from .apps import AppSettings

# instantiation will load and transform every settings
app_settings = AppSettings()
app_settings.attr_name == 'something'

# or, and in order to work with tests overriding settings
AppSettings.get_always_use_ice_cream()  # to get ASH_ALWAYS_USE_ICE_CREAM setting dynamically
my_python_object = AppSettings.get_imported_object()

You can access settings directly from the settings class, but also from the settings instances:

my_setting = AppSettings.my_setting
my_setting.get()  # get and transform
my_setting.check()  # get and check
my_setting.get_raw()  # just get the value in django settings

Running AppSettings.check() will raise an ImproperlyConfigured exception if at least one of the settings’ check methods raised an exception. It will also print all caught exceptions.

License

Software licensed under ISC license.

Installation

pip install django-app-settings

Documentation

On ReadTheDocs

Development

To run all the tests: tox

Changelog

0.2.3 (2917-05-02)

  • Add full_name property to Setting class.

  • Add required parameter to Setting class (default False).

0.2.2 (2017-04-17)

  • Import settings classes in main module to simplify imports.

0.2.1 (2017-04-17)

  • Add PositiveInt and PositiveFloat settings.

  • Add support for Django 1.11.

  • Implement basic settings classes.

0.2.0 (2017-04-17)

  • Implement basic Setting class.

  • Pin dependencies.

  • Change distribution name to app-settings.

0.1.0 (2017-03-23)

  • Alpha release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-app-settings-0.2.3.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

django_app_settings-0.2.3-py2.py3-none-any.whl (8.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-app-settings-0.2.3.tar.gz.

File metadata

File hashes

Hashes for django-app-settings-0.2.3.tar.gz
Algorithm Hash digest
SHA256 c512d164cf78fa9b7c683c819bb3b0b40c7fa032f37736c8c3ee25a9892310c4
MD5 eba853007f0e69d806fa281e199e5992
BLAKE2b-256 60c3732f2b145e9d4e787b9e51497c3a3fb663cd1a2cc2f238b2d71bef227a70

See more details on using hashes here.

File details

Details for the file django_app_settings-0.2.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_app_settings-0.2.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a8015aee22b74f864e0d3cd16867072ecfefb926f5fb20e1316904e8ab1d4fe9
MD5 8d1366ac90213eb995abc5c58f0960ad
BLAKE2b-256 ceb421de9b4cd51cdad6335d2cf53bfdfde9c1d931e9d23abf140213dc252267

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page