Package: django-hashbrown
# Django Hashbrown[![build-status-image]][travis]Yet another dead simple feature switching library for Django.Supports Django 1.8, 1.9 & 1.10.## InstallationDjango Hashbrown is [hosted on PyPI](https://pypi.python.org/pypi/django-hashbrown) soyou can just install it using either:$ pip install django-hashbrownOr:$ easy_install django-hashbrownIf you prefer to use the development version of it, you can clone the repositoryand build it manually:$ git clone https://github.com/potatolondon/django-hashbrown.git$ cd django-hashbrown$ python setup.py install[build-status-image]: https://secure.travis-ci.org/potatolondon/django-hashbrown.png?branch=master[travis]: http://travis-ci.org/potatolondon/django-hashbrown?branch=master## UsageThe main object to store feature switches data is `hashbrown.models.Switch`. This model has 4attributes:* `label` - Short name to identify each Switch* `description` - Longer description about what the switch is about* `globally_active` - Marks the tag as active all the time* `users` - M2M marking what users have the feature activated### PythonThe simplest way to work with Hashbrown is to use `is_active` method:import hashbrownif hashbrown.is_active('things'):do_something()else:do_something_else()If the given switch doesn't exist it'll be created disabled by default. Thisway `Switch` objects will never be on the database until code that checks itgets executed.Hashbrown switches can be linked to different users so only those people haveaccess to certain feature:import hashbrownif hashbrown.is_active('things', user_object):do_something()else:do_something_else()### Django templatesSame way, you can use the templatetag `ifswitch`:{% load hashbrown_tags %}{% ifswitch 'test' %}hello world!{% else %}things!{% endifswitch %}Even with the user:{% load hashbrown_tags %}{% ifswitch 'test' user %}hello world!{% else %}things!{% endifswitch %}## ConfigurationYou can prepare your switches before they get created in your settings,indicating that way either if it'll be enabled or disabled. You can add intoyour `settings.py` something like:HASHBROWN_SWITCH_DEFAULTS = {'test': {'globally_active': True},'things': {'globally_active': False,'description': 'This does some things'}}So, when the switch "test" gets checked the first time, the switch will getcreated globally active, while "things" won't be active but it'll have adescription.## TestingAnother useful feature is the ability to mock switches in your tests, soyou can write tests for any case you are covering. It'll look something like:from hashbrown.testutils import switches@switches(my_flag=True)def test_things(self):# whatever you wanna test## Django management commandDjango Hashbrown adds a 'switches' management command, which creates / deletesswitches defined in your HASHBROWN_SWITCH_DEFAULTS settings.To create all switches listed in HASHBROWN_SWITCH_DEFAULTS:python manage.py switchesAny existing switches already in the database will not be updated.To create all switches and delete any switches *not* listed inHASHBROWN_SWITCH_DEFAULTS:python manage.py switches --deleteYou will be prompted for confirmation before the switches are deleted. Use`--force` to delete the switches without confirmation.## AcknowledgementsDjango Hashbrown is based and takes some pieces of code from Django Gargoylehttps://github.com/disqus/gargoyle