1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
from django.http import HttpResponse
from django.shortcuts import render
from django.template.loader import render_to_string
from django.views.generic import View
from waffle import flag_is_active
from waffle.decorators import waffle_flag, waffle_switch
from waffle.mixins import WaffleFlagMixin, WaffleSampleMixin, WaffleSwitchMixin
def flag_in_view(request):
if flag_is_active(request, 'myflag'):
return HttpResponse('on')
return HttpResponse('off')
def flag_in_view_readonly(request):
if flag_is_active(request, 'myflag', read_only=True):
return HttpResponse('on')
return HttpResponse('off')
def flag_in_jinja(request):
return render(request, 'jinja/jinja.html')
def flag_in_django(request):
context = {
'flag_var': 'flag_var',
'switch_var': 'switch_var',
'sample_var': 'sample_var',
}
return render(request, 'django/django.html', context=context)
def no_request_context(request):
return render_to_string('django/django_email.html', context={})
@waffle_switch('foo')
def switched_view(request):
return HttpResponse('foo')
@waffle_switch('!foo')
def switched_off_view(request):
return HttpResponse('foo')
@waffle_flag('foo')
def flagged_view(request):
return HttpResponse('foo')
@waffle_flag('!foo')
def flagged_off_view(request):
return HttpResponse('foo')
def foo_view(request):
return HttpResponse('redirected')
def foo_view_with_args(request, some_number):
return HttpResponse(f'redirected with {some_number}')
@waffle_switch('foo', redirect_to=foo_view)
def switched_view_with_valid_redirect(request):
return HttpResponse('foo')
@waffle_switch('foo', redirect_to='foo_view')
def switched_view_with_valid_url_name(request):
return HttpResponse('foo')
@waffle_switch('foo', redirect_to=foo_view_with_args)
def switched_view_with_args_with_valid_redirect(request, some_number):
return HttpResponse(f'foo with {some_number}')
@waffle_switch('foo', redirect_to='foo_view_with_args')
def switched_view_with_args_with_valid_url_name(request, some_number):
return HttpResponse(f'foo with {some_number}')
@waffle_switch('foo', redirect_to='invalid_view')
def switched_view_with_invalid_redirect(request):
return HttpResponse('foo')
@waffle_flag('foo', redirect_to=foo_view)
def flagged_view_with_valid_redirect(request):
return HttpResponse('foo')
@waffle_flag('foo', redirect_to='foo_view')
def flagged_view_with_valid_url_name(request):
return HttpResponse('foo')
@waffle_flag('foo', redirect_to=foo_view_with_args)
def flagged_view_with_args_with_valid_redirect(request, some_number):
return HttpResponse(f'foo with {some_number}')
@waffle_flag('foo', redirect_to='foo_view_with_args')
def flagged_view_with_args_with_valid_url_name(request, some_number):
return HttpResponse(f'foo with {some_number}')
@waffle_flag('foo', redirect_to='invalid_view')
def flagged_view_with_invalid_redirect(request):
return HttpResponse('foo')
class BaseWaffleView(View):
def get(self, request, *args, **kwargs):
return HttpResponse('foo')
class FlagView(WaffleFlagMixin, BaseWaffleView):
waffle_flag = 'foo'
class FlagOffView(WaffleFlagMixin, BaseWaffleView):
waffle_flag = '!foo'
class SampleView(WaffleSampleMixin, BaseWaffleView):
waffle_sample = 'foo'
class SampleOffView(WaffleSampleMixin, BaseWaffleView):
waffle_sample = '!foo'
class SwitchView(WaffleSwitchMixin, BaseWaffleView):
waffle_switch = 'foo'
class SwitchOffView(WaffleSwitchMixin, BaseWaffleView):
waffle_switch = '!foo'
|