7

Refactored segment model. Implemented 'enable' and 'disable' in overview

This commit is contained in:
Jasper Berghoef
2016-11-08 17:32:27 +01:00
parent bd188edb8d
commit c7a8119ec9
8 changed files with 77 additions and 8 deletions

View File

@ -4,6 +4,9 @@ from django.conf.urls import url
from personalisation import views
app_name = 'segment'
urlpatterns = [
url(r'^segment/(\d+)/$', views.overview, name='overview'),
url(r'^segment/(?P<segment_id>[0-9]+)/enable/$', views.enable, name='enable'),
url(r'^segment/(?P<segment_id>[0-9]+)/disable/$', views.disable, name='disable'),
]

View File

@ -8,7 +8,7 @@ class SegmentMiddleware(object):
self.get_response = get_response
def __call__(self, request):
segments = Segment.objects.all().filter(status="live")
segments = Segment.objects.all().filter(status="enabled")
chosen_segments = []

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2016-11-08 15:21
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('personalisation', '0007_auto_20161108_1610'),
]
operations = [
migrations.AlterField(
model_name='segment',
name='status',
field=models.CharField(choices=[('disabled', 'Disabled'), ('enabled', 'Enabled')], default='disabled', max_length=20),
),
]

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2016-11-08 16:31
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('personalisation', '0008_auto_20161108_1621'),
]
operations = [
migrations.AlterField(
model_name='segment',
name='status',
field=models.CharField(choices=[('disabled', 'Disabled'), ('enabled', 'Enabled')], default='enabled', max_length=20),
),
]

View File

@ -19,13 +19,13 @@ class Segment(ClusterableModel):
name = models.CharField(max_length=255)
STATUS_CHOICES = (
('disabled', 'Disabled'),
('live', 'Live'),
('completed', 'Completed'),
('enabled', 'Enabled'),
)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="disabled")
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="enabled")
panels = [
FieldPanel('name'),
FieldPanel('status'),
]
def __str__(self):

View File

@ -22,11 +22,18 @@
<!-- Replace this function with a class specific one to avoid useless requests. -->
{% for segment in object_list %}
<div class="block">
<a href="edit/{{ segment.pk }}"><h2>{{ segment }}</h2></a>
<a href="inspect/{{ segment.pk }}"><h2>{{ segment }}</h2></a>
{% if user_can_create %}
<ul class="block_actions">
<li><a href="delete/{{ segment.pk }}">delete</a></li>
{% if segment.status == "disabled" %}
<li><a href="{% url 'segment:enable' segment.pk %}">enable</a></li>
{% elif segment.status == "enabled" %}
<li><a href="{% url 'segment:disable' segment.pk %}">disable</a></li>
{% endif %}
<li><a href="edit/{{ segment.pk }}">configure this</a></li>
<li><a href="delete/{{ segment.pk }}">delete</a></li>
</ul>
{% endif %}
</div>
{% endfor %}
{% endif %}

View File

@ -1,6 +1,10 @@
from __future__ import absolute_import, unicode_literals
from django.shortcuts import render
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from personalisation.models import Segment
"""
@ -8,3 +12,17 @@ Segments overview
"""
def overview(request):
return render(request, 'wagtailadmin/segment.html')
def enable(request, segment_id):
segment = get_object_or_404(Segment, pk=segment_id)
segment.status = 'enabled'
segment.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
def disable(request, segment_id):
segment = get_object_or_404(Segment, pk=segment_id)
segment.status = 'disabled'
segment.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))

View File

@ -23,7 +23,8 @@ class SegmentModelAdmin(ModelAdmin):
model = Segment
menu_icon = 'group'
add_to_settings_menu = False
list_display = ('name')
list_display = ('status', 'name')
inspect_view_enabled = True
index_view_extra_css = ['personalisation/segment/index.css']
form_view_extra_css = ['personalisation/segment/form.css']