gargoyle-yplan 2.1.1
Gargoyle is a platform built on top of Django which allows you to switch functionality of your application on and off based on conditions.
License: Apache License 2.0
Requires Python: >=3.4

========
Gargoyle
========

.. image:: https://img.shields.io/pypi/v/gargoyle-yplan.svg
    :target: https://pypi.python.org/pypi/gargoyle-yplan

.. image:: https://travis-ci.org/adamchainz/gargoyle.svg?branch=master
    :target: https://travis-ci.org/adamchainz/gargoyle

.. image:: https://readthedocs.org/projects/gargoyle-yplan/badge/?version=latest
        :target: https://gargoyle-yplan.readthedocs.io/en/latest/

**Retired: this project is no longer maintained.** I (Adam Johnson) no longer
have time to continue maintaining this. I was doing so since I took on this
project, and its related packages
`django-modeldict <https://github.com/adamchainz/django-modeldict>`__ and
`nexus <https://github.com/adamchainz/nexus>`__, for my ex-employer YPlan. If
you'd like to sponsor ongoing maintenance or take it over yourself, please
contact me@adamj.eu.

Gargoyle is a platform built on top of Django which allows you to switch functionality of your application on and off
based on conditions.

It was originally created by `Disqus <https://github.com/disqus/gargoyle>`_, but due to the inactivity we at YPlan have
taken over maintenance on this fork.

Requirements
------------

Tested with all combinations of:

* Python: 3.6
* Django: 1.11, 2.0, 2.1, 2.2

Python 3.4+ supported.

Install
-------

Install it with **pip**:

.. code-block:: bash

    pip install gargoyle-yplan

If you are upgrading from the original to this fork, you will need to run the following first, since the packages clash:

.. code-block:: bash

    pip uninstall django-modeldict gargoyle

Failing to do this will mean that ``pip uninstall gargoyle`` will also erase the files for ``gargoyle-yplan``, and
similarly for our ``django-modeldict`` fork.

Documentation
-------------

The documentation is available at `Read The Docs <https://gargoyle-yplan.readthedocs.io/>`_.




=======
History
=======

Pending Release
---------------

.. Add new release notes below this line.

2.1.1 (2019-05-17)
------------------

* **Retired: this project is no longer maintained.** I (Adam Johnson) no longer
  have time to continue maintaining this. I was doing so since I took on this
  project, and its related packages
  `django-modeldict <https://github.com/adamchainz/django-modeldict>`__ and
  `nexus <https://github.com/adamchainz/nexus>`__, for my ex-employer YPlan. If
  you'd like to sponsor ongoing maintenance or take it over yourself, please
  contact me@adamj.eu.

2.1.0 (2019-04-28)
------------------

* Drop Django 1.8, 1.9, and 1.10 support. Only Django 1.11+ is supported now.
* Depend on `nexus-yplan >= 2.1.0` which also dropped old Django support.
* Tested on Django 2.2. No changes were needed for compatibility.

2.0.0 (2019-03-03)
------------------

* Drop Python 2 support, only Python 3.4+ is supported now.

1.5.0 (2018-12-29)
------------------

* Added protection against conflicting conditions being added to a switch.

1.4.0 (2018-08-05)
------------------

* Added ``initial_status`` option to ``GARGOYLE_SWITCH_DEFAULTS``

1.3.0 (2017-10-28)
------------------

* Added missing argument message and documents for management commands
* Django 2.0b1 support

1.2.7 (2016-12-01)
------------------

* Added three built-in condition sets for checking if today is before or after
  a date - ``UTCTodayConditionSet``, ``AppTodayConditionSet``, and
  ``ActiveTimezoneTodayConditionSet``.

1.2.6 (2016-08-03)
------------------

* Set requirements to exclude ``django-jsonfield==1.0.0`` which is broken for
  PostgreSQL - use ``1.0.1+`` instead.
* Made ``gargoyle.register()`` usable as a decorator
* Made ``gargoyle.unregister()`` return the boolean value of whether something
  was unregistered.
* Fixed removing conditions where the value is the empty string.

1.2.5 (2016-05-09)
------------------

* Removed debug prints from ``conditions.py`` which spammed your WSGI logs.

1.2.4 (2016-05-02)
------------------

* Added a migration to tidy up ``bytes`` versus ``str`` for ``choices`` on
  ``Switch.status``. It's no-op as ``choices`` is in-memory only.

1.2.3 (2016-04-11)
------------------

* Bugfix for ``@switches`` which didn't work on ``TestCase`` classes properly
  in 1.2.2.

1.2.2 (2016-04-11)
------------------

* Removed the South Migrations, since South doesn't support Django 1.7+, and
  Gargoyle only supports Django 1.8+.
* Added all ``__future__`` imports to all files for Python 2.7/3
  compatibility.
* Made ``@switches`` usable as a class decorator for ``unittest.TestCase``
  classes as well, where it applies from ``setUpClass`` through all tests to
  ``tearDownClass``. This adds a dependency on ``contextdecorator`` on Python
  2.7.

1.2.1 (2016-02-25)
------------------

* Simplified autodiscovery code to use ``AppConfig.ready()``. It's no longer
  necessary to add a call to ``gargoyle.autodiscover()`` in your ``urls.py``,
  when not using Nexus.
* Fixed url ``patterns`` warnings that appear on Django 1.9

1.2.0 (2016-02-12)
------------------

* Fixed the splitting of ``Range`` conditions, a merge of disqus/gargoyle#55,
  thanks @matclayton.
* Fixed the parsing of ``Range`` conditions for the Nexus admin interface.
* Fixed the Nexus interface to work with Switches that contain dots in their
  names, a merge of disqus/gargoyle#73, thanks @Raekkeri.
* Removed all inline javascript.
* Added ``ifnotswitch`` template tag, a merge of disqus/gargoyle#92, thanks
  @mrfuxi.
* Fixed Nexus admin interface for Switches with spaces in their keys, an issue
  reported in disqus/gargoyle#98, thanks @arnaudlimbourg.

1.1.1 (2016-01-15)
------------------

* Fix jQuery Templates

1.1.0 (2016-01-14)
------------------

*This version has a broken UI, please upgrade*

* Support for Django 1.9
* Use the YPlan fork of ``django-modeldict``
* Removed support for Django 1.7
* Added support for Python 3.4 and 3.5

1.0.1 (2015-12-09)
------------------

* Fix requirements to use ``nexus-yplan`` not ``nexus``

1.0.0 (2015-12-09)
------------------

* Forked by YPlan
* Django 1.8 compatibility - use Django migrations

0.11.0 (2015-02-03)
-------------------

* Better support for Django 1.6 and Django 1.7
* Dropped support for Django 1.2 and Django 1.3
* Use ``model_name`` in favour of ``module_name`` if available (deprecation in Django 1.6)
* DateTimeFields now utilize the auto_now=True kwarg
* Travis now tests on Django 1.6/Django 1.7

0.7.3 (2012-01-31)
------------------

* Bump ModelDict version to handle expiration in Celery tasks.

0.7.2 (2012-01-31)
------------------

* Correct issue with trying to serialize datetime objects.

0.7.1 (2012-01-31)
------------------

* Changed the behavior of gargoyle.testutils.switches to monkey patch
  the is_active method which should solve scenarios where switches
  are reloaded during the context.

0.7.0 (2012-01-27)
------------------

* Added confirmation message for enabling switches globally.
* Added date modified and sorts for switches on index view.

0.6.1 (2011-12-19)
------------------

* Require Nexus >= 0.2.0

0.6.0 (2011-12-16)
------------------

* Added basic switch inheritance.
* Added auto collapsing of switch details in interface.
* Added simple search filtering of switches in interface.

0.5.2 (2011-12-06)
------------------

* Improved display of Gargoyle dashboard widget.

0.5.1 (2011-12-06)
------------------

* Fixed switch_condition_removed signal to pass ``switch`` instance.

0.5.0 (2011-12-06)
------------------

* Updated signals to pass more useful information in each one (including the switch).

0.4.0
-----

* The percent field is now available on all ModelConditionSet's by default.
* Fixed a CSRF conflict issue with Nexus.

0.3.0 (2011-08-15)
------------------

- Added gargoyle.testutils.with_switches decorator
- Added gargoyle.testutils.SwitchContextManager

0.2.4
-----

- Updated autodiscovery code to resemble Django's newer example
- Updated django-modeldict to 1.1.6 to solve a threading issue with registration
- Added GARGOYLE_AUTO_CREATE setting to disable auto creation of new switches
- Added the ability to pass arbitrary objects to the ifswitch template tag.

0.2.3 (2011-07-12)
------------------

- Ensure HostConditionSet is registered

0.2.2 (2011-07-06)
------------------

- Moved tests outside of gargoyle namespace

0.2.1
-----

- UI tweaks

0.2.0
-----

- [Backwards Incompatible] SELECTIVE switches without conditions are now inactive
- Added ConditionSet.has_active_condition, and support for default NoneType instances
  for global / environment checks.
- Added HostConditionSet which allows you to specify a switch for a single
  server hostname