This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Note

For the latest source, discussions, etc., please visit the GitHub repository

Django Pods

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

Note

AppSettings “settings“ Property

AppSettings implements __getattr__ to proxy to the settings attributes of the class:

app.QUESTION == app.settings.QUESTION

# or

RockNRollConfig.QUESTION == RockNRollConfig.settings.QUESTION

Note

Usage with Django < 1.7

Prior to Django 1.7, there wasn’t a logical place to create a class representing an app. However, any class can extend AppSettings. For example, in models.py:

from pods.apps import AppSettings


class AnyClass(AppSettings):
    settings_module = "rock_n_roll.app_settings"

Import your app class directly:

from .models import AnyClass

AnyClass.QUESTION

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
Release History

Release History

1.1.2

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django_pods-1.1.2-py2.py3-none-any.whl (7.4 kB) Copy SHA256 Checksum SHA256 py2.py3 Wheel Mar 6, 2015
django-pods-1.1.2.tar.gz (6.4 kB) Copy SHA256 Checksum SHA256 Source Mar 6, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting