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.4 (2917-05-02)

  • Settings are not checked when they default to the provided default value.

  • Settings classes received better default values corresponding to their types.

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.4.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

django_app_settings-0.2.4-py2.py3-none-any.whl (8.5 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for django-app-settings-0.2.4.tar.gz
Algorithm Hash digest
SHA256 60bf0c6eb6e9b0b5263fd741af5fdcd3bf08bcf8ff5d3b0ef8390a8089c98a90
MD5 41e737582bbd80d877b2e7c1123dd64c
BLAKE2b-256 e390a0fd00c303978b7120bd515812b3d64ab3639979fa6e1a6ed4ff2bb38b02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_app_settings-0.2.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 224bebfeb8764691fb82b07a132c1ba71d4ed897e589a5fb1d813b2436e6de98
MD5 9eee7e437aa4ab8af3fc611ca3c70958
BLAKE2b-256 963765f1af8f617a06df77bace7eb19c1c5ca01f620fd218625f7f0e020ecc30

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