Skip to content

Commit

Permalink
Merge da9a021 into 16b5846
Browse files Browse the repository at this point in the history
  • Loading branch information
willbarton committed Feb 25, 2020
2 parents 16b5846 + da9a021 commit 1270001
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 169 deletions.
3 changes: 2 additions & 1 deletion wagtailflags/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@ class FlagStateForm(forms.ModelForm):
label='Flag',
required=True,
disabled=True,
widget=forms.HiddenInput(),
)
condition = forms.ChoiceField(
label='Condition name',
label='Condition',
required=True
)
value = forms.CharField(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@
{% block content %}
{% trans "Delete flag condition:" as delete_str %}
{% include "wagtailadmin/shared/header.html" with title=delete_str subtitle=condition_str %}
{% flag_enabled 'WAGTAILFLAGS_ADMIN_BIG_LIST' as big_list_flag %}

<form class="nice-padding" method="POST" action="{% url 'wagtailflags:delete_condition' flag.name condition_pk %}">
{% csrf_token %}

<p>Are you sure you want to delete this flag condition?</p>
<input type="submit" value="Yes, delete it" class="button serious">

{% if big_list_flag %}
<a href="{% url 'wagtailflags:list' %}#{{ flag.name }}" class="button button-secondary">No, don't delete it</a>
{% else %}
<a href="{% url 'wagtailflags:flag_index' flag.name %}" class="button button-secondary">No, don't delete it</a>
{% endif %}
<a href="{% url 'wagtailflags:flag_index' flag.name %}" class="button button-secondary">No, don't delete it</a>
</form>
{% endblock %}
51 changes: 29 additions & 22 deletions wagtailflags/templates/wagtailflags/flags/edit_condition.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
{% extends "wagtailadmin/base.html" %}
{% load i18n feature_flags %}
{% block titletag %}{% if form.instance %}Edit {{ form.instance.condition }}{% else %}Create condition{% endif %}{% endblock %}
{% block titletag %}{% if form.instance %}Edit {{ form.instance.condition }} condition{% else %}Create condition{% endif %}{% endblock %}

{% block content %}
{% include "wagtailadmin/shared/header.html" with title=flag.name icon="tag" %}
{% flag_enabled 'WAGTAILFLAGS_ADMIN_BIG_LIST' as big_list_flag %}

<h2 class="nice-padding">
{% if form.instance %}Edit {{ form.instance.condition }}{% else %}Create condition{% endif %}
Expand All @@ -19,30 +18,38 @@ <h2 class="nice-padding">
{% endif %}
{% csrf_token %}
<ul class="fields">
<li class="actions">
{% for field in form %}
{% if field.errors %}
<div class="help-block help-critical" style="margin-top:0;">
{{ field.errors }}

{% for field in form %}
<li {% if field.field.required %}class="required"{% endif %}>
{% if not field.is_hidden %}
<div class="field">
{{ field.label_tag }}

<div class="field-content">
<div class="input">
{{ field }}
</div>
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>

{% if field.errors %}
<div class="help-block help-critical" style="margin-top:0;">
{{ field.errors }}
</div>
{% endif %}
</div>
{% else %}
{{ field }}
{% endif %}
<label>{{ field.label }}</label>
<div class="field-content">
<div class="input">
{{ field }}
<span></span>
</div>
<p class="help"></p>
</div>
{% endfor %}
</li>

</li>
{% endfor %}

<li class="actions">
<input class="button action-save button-longrunning" type="submit" value="Save condition" />
{% if big_list_flag %}
<a class="button bicolor icon icon-cog" href="{% url 'wagtailflags:list' %}#{{ flag.name }}">Back to {{ flag.name }}</a>
{% else %}
<a class="button bicolor icon icon-cog" href="{% url 'wagtailflags:flag_index' flag.name %}">Back to {{ flag.name }}</a>
{% endif %}
<a class="button bicolor icon icon-cog" href="{% url 'wagtailflags:flag_index' flag.name %}">Back to {{ flag.name }}</a>
</li>
</ul>
</form>
Expand Down
46 changes: 18 additions & 28 deletions wagtailflags/templates/wagtailflags/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,36 +13,26 @@
{% if flags|length == 0 %}
<p>No flags have been defined.</p>
{% else %}
{% flag_enabled 'WAGTAILFLAGS_ADMIN_BIG_LIST' as big_list_flag %}

{% if big_list_flag %}
<table class="listing">
<thead>
<tr>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
{% for flag in flags %}
<h2>{{ flag.name }}</h2>
{% include "wagtailflags/includes/flag_index.html" with flag=flag %}
<tr>
<td>
<b><a href="{% url 'wagtailflags:flag_index' flag.name %}">{{ flag.name }}</a></b>
</td>
<td>
{{ flag|state_str }}
</td>
</tr>
{% endfor %}
{% else %}
<table class="listing">
<thead>
<tr>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
{% for flag in flags %}
<tr>
<td>
<b><a href="{% url 'wagtailflags:flag_index' flag.name %}">{{ flag.name }}</a></b>
</td>
<td>
{{ flag|state_str }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}

</tbody>
</table>
{% endif %}

</div>
Expand Down
68 changes: 1 addition & 67 deletions wagtailflags/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.test import TestCase, override_settings
from django.test import TestCase

from wagtail.tests.utils import WagtailTestUtils

Expand Down Expand Up @@ -41,15 +41,6 @@ def test_flag_create(self):
self.assertEqual(new_flag_condition.value, 'False')
self.assertEqual(new_flag_condition.required, False)

@override_settings(
FLAGS={'WAGTAILFLAGS_ADMIN_BIG_LIST': [('boolean', True)]}
)
def test_flag_create_big_list(self):
response = self.client.post(
'/admin/flags/create/', {'name': 'NEW_FLAG'}
)
self.assertRedirects(response, '/admin/flags/#NEW_FLAG')

def test_flag_create_existing(self):
response = self.client.get('/admin/flags/create/')
self.assertEqual(response.status_code, 200)
Expand Down Expand Up @@ -102,18 +93,6 @@ def test_enable_flag(self):
self.assertEqual(condition_query.first().condition, 'boolean')
self.assertEqual(condition_query.first().value, 'True')

@override_settings(
FLAGS={
'WAGTAILFLAGS_ADMIN_BIG_LIST': [('boolean', True)],
'FLAG_DISABLED': [],
}
)
def test_enable_flag_big_list(self):
response = self.client.get(
'/admin/flags/FLAG_DISABLED/', {'enable': ''}
)
self.assertRedirects(response, '/admin/flags/#FLAG_DISABLED')

def test_enable_flag_with_required_true(self):
condition_query = FlagState.objects.filter(name='FLAG_DISABLED')
self.assertEqual(len(condition_query.all()), 0)
Expand Down Expand Up @@ -155,17 +134,6 @@ def test_create_flag_condition(self):
self.assertRedirects(response, '/admin/flags/DBONLY_FLAG/')
self.assertEqual(len(FlagState.objects.all()), 2)

@override_settings(
FLAGS={'WAGTAILFLAGS_ADMIN_BIG_LIST': [('boolean', True)]}
)
def test_create_flag_condition_big_list(self):
params = {
'condition': 'path matches',
'value': '/db_path',
}
response = self.client.post('/admin/flags/DBONLY_FLAG/create/', params)
self.assertRedirects(response, '/admin/flags/#DBONLY_FLAG')

def test_edit_flag_condition_nonexistent_flag_raises_404(self):
response = self.client.get('/admin/flags/THIS_FLAG_DOES_NOT_EXIST/99/')
self.assertEqual(response.status_code, 404)
Expand Down Expand Up @@ -196,25 +164,6 @@ def test_edit_flag_condition(self):
'justice'
)

@override_settings(
FLAGS={'WAGTAILFLAGS_ADMIN_BIG_LIST': [('boolean', True)]}
)
def test_edit_flag_condition_big_list(self):
condition_obj = FlagState.objects.create(
name='DBONLY_FLAG',
condition='user',
value='liberty'
)
params = {
'condition': 'user',
'value': 'justice',
}
response = self.client.post(
'/admin/flags/DBONLY_FLAG/{}/'.format(condition_obj.pk),
params
)
self.assertRedirects(response, '/admin/flags/#DBONLY_FLAG')

def test_delete_flag_condition_nonexistent_flag_raises_404(self):
response = self.client.get(
'/admin/flags/THIS_FLAG_DOES_NOT_EXIST/99/delete/'
Expand All @@ -238,18 +187,3 @@ def test_delete_flag_condition(self):
)
self.assertRedirects(response, '/admin/flags/DBONLY_FLAG/')
self.assertEqual(len(FlagState.objects.all()), 1)

@override_settings(
FLAGS={'WAGTAILFLAGS_ADMIN_BIG_LIST': [('boolean', True)]}
)
def test_delete_flag_condition_big_list(self):
condition_obj = FlagState.objects.create(
name='DBONLY_FLAG',
condition='user',
value='liberty'
)
self.assertEqual(len(FlagState.objects.all()), 2)
response = self.client.post(
'/admin/flags/DBONLY_FLAG/{}/delete/'.format(condition_obj.pk)
)
self.assertRedirects(response, '/admin/flags/#DBONLY_FLAG')
54 changes: 9 additions & 45 deletions wagtailflags/views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render, resolve_url
from django.shortcuts import get_object_or_404, redirect, render

from flags.models import FlagState
from flags.sources import get_flags
from flags.state import flag_enabled
from flags.templatetags.flags_debug import bool_enabled
from wagtailflags.forms import FlagStateForm, NewFlagForm

Expand All @@ -30,17 +29,9 @@ def create_flag(request):
)
if form.is_valid():
form.save()
if flag_enabled('WAGTAILFLAGS_ADMIN_BIG_LIST'):
return redirect(
'{flags_list}#{flag_name}'.format(
flags_list=resolve_url('wagtailflags:list'),
flag_name=form.instance.name
)
)
else:
return redirect(
'wagtailflags:flag_index', name=form.instance.name
)
return redirect(
'wagtailflags:flag_index', name=form.instance.name
)
else:
form = NewFlagForm()

Expand Down Expand Up @@ -81,16 +72,7 @@ def flag_index(request, name):
boolean_condition_obj.value = False

boolean_condition_obj.save()

if flag_enabled('WAGTAILFLAGS_ADMIN_BIG_LIST'):
return redirect(
'{flags_list}#{flag_name}'.format(
flags_list=resolve_url('wagtailflags:list'),
flag_name=name
)
)
else:
return redirect('wagtailflags:flag_index', name=name)
return redirect('wagtailflags:flag_index', name=name)

context = {
'flag': flag,
Expand All @@ -115,18 +97,9 @@ def edit_condition(request, name, condition_pk=None):
)
if form.is_valid():
form.save()

if flag_enabled('WAGTAILFLAGS_ADMIN_BIG_LIST'):
return redirect(
'{flags_list}#{flag_name}'.format(
flags_list=resolve_url('wagtailflags:list'),
flag_name=form.instance.name
)
)
else:
return redirect(
'wagtailflags:flag_index', name=form.instance.name
)
return redirect(
'wagtailflags:flag_index', name=name
)

else:
form = FlagStateForm(initial={'name': name}, instance=condition)
Expand All @@ -150,16 +123,7 @@ def delete_condition(request, name, condition_pk):

if request.method == 'POST':
condition.delete()

if flag_enabled('WAGTAILFLAGS_ADMIN_BIG_LIST'):
return redirect(
'{flags_list}#{flag_name}'.format(
flags_list=resolve_url('wagtailflags:list'),
flag_name=name
)
)
else:
return redirect('wagtailflags:flag_index', name=name)
return redirect('wagtailflags:flag_index', name=name)

context = {
'flag': flag,
Expand Down

0 comments on commit 1270001

Please sign in to comment.