Metadata-Version: 1.1
Name: django-config-models
Version: 2.0.1
Summary: Configuration models for Django allowing config management with auditing.
Home-page: https://github.com/edx/django-config-models
Author: edX
Author-email: oscm@edx.org
License: AGPL 3.0
Description: Part of `edX code`__.
        
        __ http://code.edx.org/
        
        django-config-models  |Travis|_ |Codecov|_
        ===================================================
        .. |Travis| image:: https://travis-ci.org/edx/config_models.svg?branch=master
        .. _Travis: https://travis-ci.org/edx/config_models
        
        .. |Codecov| image:: http://codecov.io/github/edx/config_models/coverage.svg?branch=master
        .. _Codecov: http://codecov.io/github/edx/config_models?branch=master
        
        Overview
        --------
        
        This app allows other apps to easily define a configuration model
        that can be hooked into the admin site to allow configuration management
        with auditing.
        
        Installation
        ------------
        
        Add ``config_models`` to your ``INSTALLED_APPS`` list.
        
        Usage
        -----
        
        Create a subclass of ``ConfigurationModel``, with fields for each
        value that needs to be configured::
        
            class MyConfiguration(ConfigurationModel):
                frobble_timeout = IntField(default=10)
                frazzle_target = TextField(defalut="debug")
        
        This is a normal django model, so it must be synced and migrated as usual.
        
        The default values for the fields in the ``ConfigurationModel`` will be
        used if no configuration has yet been created.
        
        Register that class with the Admin site, using the ``ConfigurationAdminModel``::
        
            from django.contrib import admin
        
            from config_models.admin import ConfigurationModelAdmin
        
            admin.site.register(MyConfiguration, ConfigurationModelAdmin)
        
        Use the configuration in your code::
        
            def my_view(self, request):
                config = MyConfiguration.current()
                fire_the_missiles(config.frazzle_target, timeout=config.frobble_timeout)
        
        Use the admin site to add new configuration entries. The most recently created
        entry is considered to be ``current``.
        
        Configuration
        -------------
        
        The current ``ConfigurationModel`` will be cached in the ``configuration`` django cache,
        or in the ``default`` cache if ``configuration`` doesn't exist. The ``configuration`` and ``default`` caches
        are specified in the django ``CACHES`` setting. The caching can be per-process, per-machine, per-cluster, or
        some other strategy, depending on the cache configuration.
        
        You can specify the cache timeout in each ``ConfigurationModel`` by setting the ``cache_timeout`` property.
        
        You can change the name of the cache key used by the ``ConfigurationModel`` by overriding
        the ``cache_key_name`` function.
        
        Extension
        ---------
        
        ``ConfigurationModels`` are just django models, so they can be extended with new fields
        and migrated as usual. Newly added fields must have default values and should be nullable,
        so that rollbacks to old versions of configuration work correctly.
        
        Documentation
        -------------
        
        The full documentation is at https://config_models.readthedocs.org.
        
        License
        -------
        
        The code in this repository is licensed under the AGPL 3.0 unless
        otherwise noted.
        
        Please see ``LICENSE.txt`` for details.
        
        How To Contribute
        -----------------
        
        Contributions are very welcome.
        
        Please read `How To Contribute <https://github.com/edx/edx-platform/blob/master/CONTRIBUTING.rst>`_ for details.
        
        Even though they were written with ``edx-platform`` in mind, the guidelines
        should be followed for Open edX code in general.
        
        Reporting Security Issues
        -------------------------
        
        Please do not report security issues in public. Please email security@edx.org.
        
        Mailing List and IRC Channel
        ----------------------------
        
        You can discuss this code in the `edx-code Google Group`__ or in the ``#edx-code`` IRC channel on Freenode.
        
        __ https://groups.google.com/forum/#!forum/edx-code
        
        
        Change Log
        ----------
        
        ..
           All enhancements and patches to django-config-models will be documented
           in this file.  It adheres to the structure of http://keepachangelog.com/ ,
           but in reStructuredText instead of Markdown (for ease of incorporation into
           Sphinx documentation and the PyPI description).
        
           This project adheres to Semantic Versioning (http://semver.org/).
        
        .. There should always be an "Unreleased" section for changes pending release.
        
        Unreleased
        ~~~~~~~~~~
        
        [2.0.1] - 2020-05-08
        ~~~~~~~~~~~~~~~~~~~~
        * Dropped support for Django<2.2
        * Dropped support for python3.6
        * Added support for python3.8
        
        [2.0.0] - 2020-02-06
        ~~~~~~~~~~~~~~~~~~~~
        * Dropping support for Python 2.7
        * Switch to using edx-django-utils TieredCache (a two-layer cache that uses both
          Django's cache and an internal request-level cache) to reduce the number of
          memcached roundtrips. This was a major performance issue that accounted for
          10-20% of transaction time for certain courseware views in edx-platform.
        * It is now REQUIRED to add `RequestCacheMiddleware` `to middleware
          <https://github.com/edx/edx-django-utils/tree/master/edx_django_utils/cache#tieredcachemiddleware>`_
          to use ConfigModels.
        * Remove usage of the "configuration" cache setting. ConfigModels now always use
          the default Django cache.
        * Django Rest Framework 3.7 and 3.8 are no longer supported.
        
        [1.0.1] - 2019-04-23
        ~~~~~~~~~~~~~~~~~~~~
        * Fix auto publishing to PyPI
        
        [1.0.0] - 2019-04-23
        ~~~~~~~~~~~~~~~~~~~~
        Changed
        -------
        * Unpin django-rest-framework requirements. This is a potentially **breaking change** if people were
          relying on this package to ensure the correct version of djangorestframework was being installed.
        
        
        [0.2.0] - 2018-07-13
        ~~~~~~~~~~~~~~~~~~~~
        
        Added
        -----
        * Support for Python 3.6
        
        Removed
        -------
        * Testing against Django 1.8 - 1.10
        
        Changed
        -------
        * Updated dependency management to follow OEP-18
        
        [0.1.10] - 2018-05-21
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Changed
        -------
        * Don't assume the user model is Django's default auth.User
        
        
        [0.1.9] - 2017-08-07
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Changed
        -------
        * Updated Django REST Framework dependency to 3.6 as we were not actually compatible with 3.2.
        
        
        [0.1.8] - 2017-06-19
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Added
        -----
        * Support for Django 1.11.
        
        
        [0.1.7] - 2017-06-19
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        * Unreleased version number
        
        
        [0.1.6] - 2017-06-01
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Added
        -----
        * Support for Django 1.10.
        
        [0.1.1] - [0.1.5] - 2017-06-01
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Added
        _____
        
        * Add quality testing to travis run.
        * Add encrypted password for package PyPI.
        
        Removed
        -------
        
        * Remove the quality condition on deployment.
        * Remove the version combos known to fail.
        
        Changed
        -------
        
        * Allow for lower versions of djangorestframework, to be compatible with edx-platform.
        * Constrict DRF to version that works.
        * Update versions of requirements via pip-compile.
        * Use different test target - test-all instead of validate.
        
        Fixed
        -----
        
        * Fix name and supported versions.
        
        [0.1.0] - 2016-10-06
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Added
        _____
        
        * First release on PyPI.
        
Keywords: Django edx
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.8
