Skip to main content

App Settings for Django

Project description

Django Pods

https://pypip.in/version/django-pods/badge.svg https://pypip.in/format/django-pods/badge.svg https://travis-ci.org/jthi3rry/django-pods.svg?branch=master https://coveralls.io/repos/jthi3rry/django-pods/badge.png?branch=master https://landscape.io/github/jthi3rry/django-pods/master/landscape.png https://pypip.in/py_versions/django-pods/badge.svg https://pypip.in/license/django-pods/badge.svg

Django Pods is a minimalist package that lets you configure default settings for your reusable apps, and allows developers using your apps to override these defaults in their own project settings.

This package is largely inspired by Django Rest Framework and Django AllAuth and adapted to work with Django Applications, but also with any classes extending pods.apps.AppSettings.

Preview

Django Pods allows developers to customise app settings in two ways:

  1. Dictionary style (as per Django Rest Framework):

    YOUR_APP = {
        "SETTING": "VALUE"
    }
  2. Prefix style:

    YOUR_APP_SETTING = "VALUE"

Installation

pip install django-pods

Usage in Reusable Apps

  1. Add django-pods to the install_requires of your setup.py:

    setup(
        name="rock_n_roll",
        install_requires=["django-pods", ...],
        ...
    )
  2. Add the AppSettings mixin to your AppConfig implementation in rock_n_roll/apps.py:

    from django.apps import AppConfig
    from pods.apps import AppSettings
    
    
    class RockNRollConfig(AppSettings, AppConfig):
        name = 'rock_n_roll'
        verbose_name = "Rock ’n’ roll"
    
        # Path to app settings module
        settings_module = "rock_n_roll.app_settings"
    
        # Optional
        settings_imports = ("CLASS_TO_IMPORT",)
    
        # Optional
        # defaults to the capitalized class name, e.g. ROCK_N_ROLL_CONFIG
        settings_key = "ROCK_N_ROLL"
  3. Declare your default app settings in rock_n_roll/app_settings.py:

    QUESTION = "What is your favourite band?"
    ANSWER = "The Rolling Stones"
    CLASS_TO_IMPORT = "path.to.ClassToImport"
  4. Access your settings anywhere in your package:

    from django.apps import apps
    
    app = apps.get_app_config('rock_n_roll')
    
    app.QUESTION
    # What is your favourite band?
    
    app.ANSWER
    # The Beatles
    
    app.CLASS_TO_IMPORT
    # <class 'path.to.ClassToImport'>

Settings can also be accessed directly via the class:

from rock_n_roll.apps import RockNRollConfig


RockNRollConfig.QUESTION
RockNRollConfig.ANSWER
RockNRollConfig.CLASS_TO_IMPORT

Usage in Projects

  1. Install the app that uses Django Pods:

    pip install rock_n_roll
  2. Add the app to the INSTALLED_APPS of your project/settings.py:

    INSTALLED_APPS = (
        ...
        "rock_n_roll",
        ...
    )
  3. Override the app’s settings as needed:

    # Dictionary style
    ROCK_N_ROLL = {
        "ANSWER": "The Beatles",
    }
    
    
    # Prefix style
    ROCK_N_ROLL_ANSWER = "The Beatles"

Running Tests

tox

Contributions

All contributions and comments are welcome.

Change Log

v1.1.2

  • Django 1.8 support

v1.1.1

  • Switch to Semantic Versioning

  • Fix issue with parse_requirements for newer versions of pip (>=6.0.0)

  • Fix typo in AppSettingsMeta

v1.1

  • Exclude tests and docs from the build

v1.0

  • Add support for prefix style overrides

  • Documentation changes

v0.4

  • Fix bug with default settings_key not set correctly if none given

v0.3

  • Unit tests now use Django 1.7 final and support Django 1.6 and 1.5

  • Fix PyPI classifiers for supported python versions

v0.2

  • Fix compatibility with Django 1.6

v0.1

  • Initial

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-pods-1.1.2.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

django_pods-1.1.2-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-pods-1.1.2.tar.gz.

File metadata

File hashes

Hashes for django-pods-1.1.2.tar.gz
Algorithm Hash digest
SHA256 ecadc0ec5bed980a448b8bc25c85c2ac7640d214d000f72b999232c238bf99ab
MD5 59f67c840fecf0260c8a79c71daf8a30
BLAKE2b-256 1e80580390f0734ebec5936721e630dd4c7a447ca128fefb785c7bc8721032d6

See more details on using hashes here.

File details

Details for the file django_pods-1.1.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_pods-1.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bc70e2b04ea54470dc2beb1dcb593ba347a57873858327066f30db57ee1c6595
MD5 4036ac5e6102a698d038885799311df9
BLAKE2b-256 b7736e978a194a95915a2c36ab466a81d9e96f552c2054eda729ef0f6fa05b3a

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