Compare commits
9 Commits
master
...
feature/se
Author | SHA1 | Date | |
---|---|---|---|
acd273c06c | |||
4b3af020fd | |||
05afea8d68 | |||
c31415b484 | |||
4a596d62f2 | |||
3c1c0c3306 | |||
937c06cf32 | |||
d7fac2607b | |||
be672f6fde |
@ -25,7 +25,7 @@
|
||||
"enable_date": "2017-06-02T10:58:39.389Z",
|
||||
"disable_date": "2017-06-02T10:34:51.722Z",
|
||||
"visit_count": 0,
|
||||
"status": "enabled",
|
||||
"enabled": true,
|
||||
"persistent": false,
|
||||
"match_any": false
|
||||
}
|
||||
@ -39,7 +39,7 @@
|
||||
"enable_date": "2017-06-02T10:57:44.497Z",
|
||||
"disable_date": "2017-06-02T10:57:39.984Z",
|
||||
"visit_count": 1,
|
||||
"status": "enabled",
|
||||
"enabled": true,
|
||||
"persistent": false,
|
||||
"match_any": false
|
||||
}
|
||||
|
@ -0,0 +1,45 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-08-10 13:48
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def forward(apps, schema_editor):
|
||||
Segment = apps.get_model('wagtail_personalisation', 'Segment')
|
||||
|
||||
for segment in Segment.objects.all():
|
||||
segment.enabled = segment.status == 'enabled'
|
||||
segment.save()
|
||||
|
||||
|
||||
def backward(apps, schema_editor):
|
||||
Segment = apps.get_model('wagtail_personalisation', 'Segment')
|
||||
|
||||
for segment in Segment.objects.all():
|
||||
if segment.enabled:
|
||||
segment.status = 'enabled'
|
||||
else:
|
||||
segment.status = 'disabled'
|
||||
|
||||
segment.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtail_personalisation', '0023_personalisablepagemetadata_variant_cascade'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='segment',
|
||||
name='enabled',
|
||||
field=models.BooleanField(default=True, help_text='Should the segment be active?'),
|
||||
),
|
||||
migrations.RunPython(forward, reverse_code=backward),
|
||||
migrations.RemoveField(
|
||||
model_name='segment',
|
||||
name='status',
|
||||
),
|
||||
]
|
@ -22,20 +22,12 @@ from .forms import SegmentAdminForm
|
||||
|
||||
class SegmentQuerySet(models.QuerySet):
|
||||
def enabled(self):
|
||||
return self.filter(status=self.model.STATUS_ENABLED)
|
||||
return self.filter(enabled=True)
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class Segment(ClusterableModel):
|
||||
"""The segment model."""
|
||||
STATUS_ENABLED = 'enabled'
|
||||
STATUS_DISABLED = 'disabled'
|
||||
|
||||
STATUS_CHOICES = (
|
||||
(STATUS_ENABLED, _('Enabled')),
|
||||
(STATUS_DISABLED, _('Disabled')),
|
||||
)
|
||||
|
||||
TYPE_DYNAMIC = 'dynamic'
|
||||
TYPE_STATIC = 'static'
|
||||
|
||||
@ -50,8 +42,8 @@ class Segment(ClusterableModel):
|
||||
enable_date = models.DateTimeField(null=True, editable=False)
|
||||
disable_date = models.DateTimeField(null=True, editable=False)
|
||||
visit_count = models.PositiveIntegerField(default=0, editable=False)
|
||||
status = models.CharField(
|
||||
max_length=20, choices=STATUS_CHOICES, default=STATUS_ENABLED)
|
||||
enabled = models.BooleanField(
|
||||
default=True, help_text=_("Should the segment be active?"))
|
||||
persistent = models.BooleanField(
|
||||
default=False, help_text=_("Should the segment persist between visits?"))
|
||||
match_any = models.BooleanField(
|
||||
@ -111,7 +103,7 @@ class Segment(ClusterableModel):
|
||||
MultiFieldPanel([
|
||||
FieldPanel('name', classname="title"),
|
||||
FieldRowPanel([
|
||||
FieldPanel('status'),
|
||||
FieldPanel('enabled'),
|
||||
FieldPanel('persistent'),
|
||||
]),
|
||||
FieldPanel('match_any'),
|
||||
@ -178,9 +170,7 @@ class Segment(ClusterableModel):
|
||||
return segment_rules
|
||||
|
||||
def toggle(self, save=True):
|
||||
self.status = (
|
||||
self.STATUS_ENABLED if self.status == self.STATUS_DISABLED
|
||||
else self.STATUS_DISABLED)
|
||||
self.enabled = not self.enabled
|
||||
if save:
|
||||
self.save()
|
||||
|
||||
|
@ -7,16 +7,16 @@ from wagtail_personalisation.models import Segment
|
||||
def check_status_change(sender, instance, *args, **kwargs):
|
||||
"""Check if the status has changed. Alter dates accordingly."""
|
||||
try:
|
||||
original_status = sender.objects.get(pk=instance.id).status
|
||||
original_status = sender.objects.get(pk=instance.id).enabled
|
||||
except sender.DoesNotExist:
|
||||
original_status = ""
|
||||
original_status = None
|
||||
|
||||
if original_status != instance.status:
|
||||
if instance.status == instance.STATUS_ENABLED:
|
||||
if original_status != instance.enabled:
|
||||
if instance.enabled is True:
|
||||
instance.enable_date = timezone.now()
|
||||
instance.visit_count = 0
|
||||
return instance
|
||||
if instance.status == instance.STATUS_DISABLED:
|
||||
if instance.enabled is False:
|
||||
instance.disable_date = timezone.now()
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div class="nice-padding block_container">
|
||||
{% if all_count %}
|
||||
{% for segment in object_list %}
|
||||
<div class="block block--{{ segment.status }}" onclick="location.href = '{% url 'wagtail_personalisation_segment_modeladmin_edit' segment.pk %}'">
|
||||
<div class="block block--{{ segment.enabled|yesno:"enabled,disabled" }}" onclick="location.href = '{% url 'wagtail_personalisation_segment_modeladmin_edit' segment.pk %}'">
|
||||
<h2>{{ segment }}</h2>
|
||||
|
||||
<div class="inspect_container">
|
||||
@ -98,10 +98,10 @@
|
||||
|
||||
{% if user_can_create %}
|
||||
<ul class="block_actions">
|
||||
{% if segment.status == segment.STATUS_DISABLED %}
|
||||
<li><a href="{% url 'segment:toggle' segment.pk %}" title="{% trans "Enable this segment" %}">enable</a></li>
|
||||
{% elif segment.status == segment.STATUS_ENABLED %}
|
||||
{% if segment.enabled %}
|
||||
<li><a href="{% url 'segment:toggle' segment.pk %}" title="{% trans "Disable this segment" %}">disable</a></li>
|
||||
{% else %}
|
||||
<li><a href="{% url 'segment:toggle' segment.pk %}" title="{% trans "Enable this segment" %}">enable</a></li>
|
||||
{% endif %}
|
||||
<li><a href="{% url 'wagtail_personalisation_segment_modeladmin_edit' segment.pk %}" title="{% trans "Configure this segment" %}">configure this</a></li>
|
||||
{% if segment.is_static %}
|
||||
|
@ -83,7 +83,7 @@ class SegmentModelAdmin(ModelAdmin):
|
||||
delete_view_class = SegmentModelDeleteView
|
||||
menu_icon = 'fa-snowflake-o'
|
||||
add_to_settings_menu = False
|
||||
list_display = ('name', 'persistent', 'match_any', 'status',
|
||||
list_display = ('name', 'persistent', 'match_any', 'enabled',
|
||||
'page_count', 'variant_count', 'statistics')
|
||||
index_view_extra_js = ['js/commons.js', 'js/index.js']
|
||||
index_view_extra_css = ['css/index.css']
|
||||
|
@ -7,7 +7,7 @@ from wagtail_personalisation import models
|
||||
|
||||
class SegmentFactory(factory.DjangoModelFactory):
|
||||
name = 'TestSegment'
|
||||
status = models.Segment.STATUS_ENABLED
|
||||
enabled = True
|
||||
|
||||
class Meta:
|
||||
model = models.Segment
|
||||
|
@ -64,7 +64,7 @@ def test_refresh_removes_disabled(rf):
|
||||
adapter.set_segments([segment_1, segment_2])
|
||||
|
||||
adapter = adapters.SessionSegmentsAdapter(request)
|
||||
segment_1.status = segment_1.STATUS_DISABLED
|
||||
segment_1.enabled = False
|
||||
segment_1.save()
|
||||
adapter.refresh()
|
||||
|
||||
|
@ -15,14 +15,14 @@ from wagtail_personalisation.rules import TimeRule
|
||||
@pytest.mark.django_db
|
||||
def test_segment_create():
|
||||
factoried_segment = SegmentFactory()
|
||||
segment = Segment(name='TestSegment', status='enabled')
|
||||
segment = Segment(name='TestSegment', enabled=True)
|
||||
TimeRule(
|
||||
start_time=datetime.time(8, 0, 0),
|
||||
end_time=datetime.time(23, 0, 0),
|
||||
segment=segment)
|
||||
|
||||
assert factoried_segment.name == segment.name
|
||||
assert factoried_segment.status == segment.status
|
||||
assert factoried_segment.enabled == segment.enabled
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
@ -12,7 +12,7 @@ from wagtail_personalisation.rules import TimeRule, VisitCountRule
|
||||
|
||||
|
||||
def form_with_data(segment, *rules):
|
||||
model_fields = ['type', 'status', 'count', 'name', 'match_any', 'randomisation_percent']
|
||||
model_fields = ['type', 'enabled', 'count', 'name', 'match_any', 'randomisation_percent']
|
||||
|
||||
class TestSegmentAdminForm(SegmentAdminForm):
|
||||
class Meta:
|
||||
|
Reference in New Issue
Block a user