Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pawamoy/django-appsettings
Application settings helper for Django apps.
https://github.com/pawamoy/django-appsettings
app apps django settings
Last synced: 14 days ago
JSON representation
Application settings helper for Django apps.
- Host: GitHub
- URL: https://github.com/pawamoy/django-appsettings
- Owner: pawamoy
- License: isc
- Created: 2017-03-23T18:01:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-09-07T13:30:06.000Z (about 1 year ago)
- Last Synced: 2024-05-02T05:57:01.433Z (7 months ago)
- Topics: app, apps, django, settings
- Language: Python
- Size: 220 KB
- Stars: 15
- Watchers: 4
- Forks: 5
- Open Issues: 12
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
README
==================
Django AppSettings
==================.. start-badges
|travis|
|codacygrade|
|codacycoverage|
|version|
|wheel|
|gitter|.. |travis| image:: https://travis-ci.org/pawamoy/django-appsettings.svg?branch=master
:target: https://travis-ci.org/pawamoy/django-appsettings/
:alt: Travis Build Status.. |codacygrade| image:: https://api.codacy.com/project/badge/Grade/20c775cc36804ddda8a70eb05b64ce92
:target: https://www.codacy.com/app/pawamoy/django-appsettings/dashboard
:alt: Codacy Grade.. |codacycoverage| image:: https://api.codacy.com/project/badge/Coverage/20c775cc36804ddda8a70eb05b64ce92
:target: https://www.codacy.com/app/pawamoy/django-appsettings/dashboard
:alt: Codacy Coverage.. |version| image:: https://img.shields.io/pypi/v/django-app-settings.svg?style=flat
:target: https://pypi.org/project/django-app-settings/
:alt: PyPI latest release.. |wheel| image:: https://img.shields.io/pypi/wheel/django-app-settings.svg?style=flat
:target: https://pypi.org/project/django-app-settings/
:alt: PyPI Wheel.. |gitter| image:: https://badges.gitter.im/pawamoy/django-appsettings.svg
:target: https://gitter.im/pawamoy/django-appsettings
:alt: Join the chat at https://gitter.im/pawamoy/django-appsettings.. end-badges
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.
Installation
============::
pip install django-app-settings
Documentation
=============`On ReadTheDocs`_
.. _`On ReadTheDocs`: http://django-appsettings.readthedocs.io/
Development
===========To run all the tests: ``tox``. See `CONTRIBUTING`_.
.. _`CONTRIBUTING`: https://github.com/pawamoy/django-appsettings/blob/master/CONTRIBUTING.rst
Quick usage
===========.. code:: python
# Define your settings class
import appsettingsclass MySettings(appsettings.AppSettings):
boolean_setting = appsettings.BooleanSetting(default=False)
required_setting = appsettings.StringSetting(required=True)
named_setting = appsettings.IntegerSetting(name='integer_setting')
prefixed_setting = appsettings.ListSetting(prefix='my_app_')class Meta:
setting_prefix = 'app_'# Related settings in settings.py
APP_INTEGER_SETTING = -24
MY_APP_PREFIXED_SETTING = []# Instantiate your class wherever you need to
appconf = MySettings()
assert appconf.boolean_setting is False # True (default value)
assert appconf.required_setting == 'hello' # raises AttributeError
assert appconf.named_setting < 0 # True
assert appconf.prefixed_setting # False (empty list)# Values are cached to avoid perf issues
with override_settings(APP_REQUIRED_SETTING='hello',
APP_INTEGER_SETTING=0):
# ...but cache is cleaned on Django's setting_changed signal
assert appconf.required_setting == 'hello' # True
assert appconf.named_setting < 0 # False# You can still access settings through the class itself (values not cached)
print(MySettings.boolean_setting.get_value()) # explicit call
print(MySettings.boolean_setting.value) # with property# Run type checking and required presence on all settings at once
MySettings.check() # raises Django's ImproperlyConfigured (missing required_setting)
# MySettings.check() is best called in django.apps.AppConfig's ready methodYou can easily create your own Setting classes for more complex settings.
.. code:: python
import re
import appsettings
from django.core.exceptions import ValidationErrorclass RegexSetting(appsettings.Setting):
def validate(self, value):
re_type = type(re.compile(r'^$'))
if not isinstance(value, (re_type, str)):
# Raise ValidationError
raise ValidationError('Value must be a string or a compiled regex (use re.compile)')def transform(self, value):
# ensure it always returns a compiled regex
if isinstance(value, str):
value = re.compile(value)
return valuePlease check the documentation to see even more advanced usage.
License
=======Software licensed under `ISC`_ license.
.. _ISC: https://www.isc.org/downloads/software-support-policy/isc-license/