Gargoyle is a platform built on top of Django which allows you to switch functionality of your application on and off based on conditions.
Install it with pip (or easy_install):
pip install gargoyle
If you dont have Nexus already enabled, you will need to do that first.
(Nexus is a replacement for your Django admin frontend, that works with django.contrib.admin)
Now you just need to add Gargoyle to your INSTALLED_APPS
:
INSTALLED_APPS = ( ... 'gargoyle', )
Gargoyle is typically used in two fashions. The first and simplest, is as a decorator. The decorator will automatically integrate with filters registered to the User
model, as well as IP address:
from gargoyle.decorators import switch_is_active @switch_is_active('my switch name') def my_view(request): return 'foo'
The second use is with the is_active
method. This allows you to perform validation on your own custom objects:
from gargoyle import gargoyle def my_function(request): if gargoyle.is_active('my switch name', request): return 'foo' else: return 'bar' # with custom objects from gargoyle import gargoyle def my_method(user): if gargoyle.is_active('my switch name', user): return 'foo' else: return 'bar'
Gargoyle provides an easy way to hook in your own condition sets to allow additional filters. Simply place a ConditionSet class in myapp/gargoyle.py
and it will automatically discover it:
from __future__ import absolute_import import gargoyle from gargoyle import conditions from django.contrib.sites.models import Site class SiteConditionSet(conditions.ModelConditionSet): percent = conditions.Percent() domain = conditions.String() gargoyle.register(SiteConditionSet(Site))
And now you can pass it into is_active:
gargoyle.is_active('my switch name', Site.objects.get_current())