Metadata-Version: 2.0
Name: django-easysettings
Version: 1.1
Summary: Easy app-specific settings for Django
Home-page: http://github.com/SmileyChris/django-easysettings
Author: Chris Beaven
Author-email: smileychris@gmail.com
License: UNKNOWN
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules

===================
django-easysettings
===================

Easy app-specific settings for Django.


Installation
============

To install, run: ``pip install django-easysettings``


Usage
=====

Create a ``conf.py`` file within your app's directory, adding attributes for
the default values of your app-specific settings. They will be overridden by
any project setting that is provided.

For example::

    from easysettings import AppSettings


    class Settings(AppSettings):
        MYAPP_WIDGETS = ('foo', 'bar')


    settings = Settings()


Then in your app, rather than `from django.conf import settings`, use
`from myapp.conf import settings`. For example::

    from myapp.conf import settings


    def dashboard(request):
        data = {}
        for widget in settings.MYAPP_WIDGETS:
            data[widget] = render_widget(widget)
        if settings.DEBUG:
            data['debug_mode'] = True
        # ...


Isolating Settings when Testing
-------------------------------

You can force your app's tests to use the default project settings rather than
any value in the project's ``settings`` configuration module.

Just set ``settings.isolated = True``.

For example, you could use a base test class to do this::

    class BaseTest(TestCase):

        def setUp(self):
            """
            Isolate all application specific settings.
            """
            output = super(BaseTest, self).setUp()
            settings.isolated = True
            return output

        def tearDown(self):
            """
            Restore settings to their original state.
            """
            settings.isolated = False
            settings.revert()
            return super(BaseTest, self).tearDown()

As also shown in the example above, you can revert any changes made by calling
``settings.revert()``.


