Skip to main content

App Settings for Django 1.7

Project description

https://pypip.in/version/django-pods/badge.svg https://pypip.in/format/django-pods/badge.svg https://travis-ci.org/OohlaLabs/django-pods.svg?branch=master https://coveralls.io/repos/OohlaLabs/django-pods/badge.png?branch=master https://landscape.io/github/OohlaLabs/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 1.7 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.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.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

django_pods-1.0-py2.py3-none-any.whl (10.4 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: django-pods-1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django-pods-1.0.tar.gz
Algorithm Hash digest
SHA256 e2c893ca35d823579a7012c76b92c2ee86842eafa7c29b982d9e9723db9d08b1
MD5 1c4d6c5a1be17b8c85ed8d0f20d79ec8
BLAKE2b-256 266de312f39841b4b0ef0c7e972ea562dcad74ad332bb7433776aa78f988bb77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_pods-1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 da694206ad4a67222bf550ffdd850a0165c7a4f4df99124582596c7f1fa56a29
MD5 5ad7aff3c02147097a177c1f8856d256
BLAKE2b-256 c4dbe054c27b1b41f2e8377c5292973aa4d3edb280e5b8dbee67c77aa7f428d5

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