work in progress
Signed-off-by: Jasper Berghoef <jasper.berghoef@gmail.com>
This commit is contained in:
committed by
Boris Besemer
parent
b5d0a657ed
commit
d1528f1ed4
@@ -37,6 +37,13 @@ class AbstractBaseRule(models.Model):
|
||||
def __str__(self):
|
||||
return "Abstract segmentation rule"
|
||||
|
||||
def encoded_name(self):
|
||||
"""Returns a string with a slug for the rule"""
|
||||
return slugify(self.__str__().lower())
|
||||
|
||||
def description(self):
|
||||
return "Abstract segmentation rule"
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
@@ -67,6 +74,18 @@ class TimeRule(AbstractBaseRule):
|
||||
def __str__(self):
|
||||
return _('Time Rule')
|
||||
|
||||
def description(self):
|
||||
description = {
|
||||
'title': _('These users visit between'),
|
||||
'value': _('{} and {}'),
|
||||
}
|
||||
|
||||
description['value'] = description['value'].format(
|
||||
self.start_time,
|
||||
self.end_time)
|
||||
|
||||
return description
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class DayRule(AbstractBaseRule):
|
||||
@@ -115,6 +134,20 @@ class DayRule(AbstractBaseRule):
|
||||
def __str__(self):
|
||||
return _('Day Rule')
|
||||
|
||||
def description(self):
|
||||
description = {
|
||||
'title': _('These users visit on'),
|
||||
'value': _('{}'),
|
||||
}
|
||||
|
||||
days = [self.mon]
|
||||
|
||||
description['value'] = description['value'].format(
|
||||
self.start_time,
|
||||
self.end_time)
|
||||
|
||||
return description
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class ReferralRule(AbstractBaseRule):
|
||||
@@ -326,6 +359,13 @@ class Segment(ClusterableModel):
|
||||
"""Returns a string with a slug for the segment"""
|
||||
return slugify(self.name.lower())
|
||||
|
||||
def get_rules(self):
|
||||
rules = AbstractBaseRule.__subclasses__()
|
||||
segment_rules = []
|
||||
for rule in rules:
|
||||
segment_rules += rule.objects.filter(segment=self)
|
||||
return segment_rules
|
||||
|
||||
|
||||
def check_status_change(sender, instance, *args, **kwargs):
|
||||
"""Check if the status has changed. Alter dates accordingly."""
|
||||
|
@@ -35,42 +35,13 @@
|
||||
</ul>
|
||||
|
||||
<ul class="inspect segment_rules">
|
||||
{% for rule in segment.personalisation_timerule_related.all %}
|
||||
<li class="time_rule">
|
||||
These users visit between
|
||||
<span>{{ rule.start_time }} and {{ rule.end_time }}</span>
|
||||
{% for rule in segment.get_rules %}
|
||||
<li class="{{ rule.encoded_name }}">
|
||||
{{ rule.description.title }}
|
||||
<span>{{ rule.description.value }}</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
{% for rule in segment.personalisation_referralrule_related.all %}
|
||||
<li class="referral_rule">
|
||||
These visits originate from
|
||||
<pre>{{ rule.regex_string }}</pre>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
{% for rule in segment.personalisation_visitcountrule_related.all %}
|
||||
<li class="visit_count_rule">
|
||||
These users visited {{ rule.counted_page }}
|
||||
<span>{{ rule.get_operator_display }} {{ rule.count }} times</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
{% for rule in segment.personalisation_queryrule_related.all %}
|
||||
<li class="query_rule">
|
||||
These users used a url with the query
|
||||
<pre>?{{ rule.parameter }}={{ rule.value }}</pre>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
<li class="persistent_state {{ segment.persistent|yesno:"persistent,fleeting" }}">
|
||||
{% trans "The persistence of this segment is" %}
|
||||
{% if segment.persistent %}
|
||||
<span title="{% trans "This segment persists in between visits" %}">{% trans "Persistent" %}</span>
|
||||
{% else %}
|
||||
<span title="{% trans "This segment is reevaluated on every visit" %}">{% trans "Fleeting" %}</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@@ -6,15 +6,17 @@ from django.conf.urls import include, url
|
||||
from django.shortcuts import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
|
||||
from wagtail.contrib.modeladmin.views import IndexView
|
||||
from wagtail.wagtailadmin.widgets import Button, ButtonWithDropdownFromHook
|
||||
from wagtail.wagtailcore import hooks
|
||||
|
||||
from personalisation import admin_urls
|
||||
from personalisation.app_settings import segments_adapter
|
||||
from personalisation.models import PersonalisablePage, Segment
|
||||
from personalisation.utils import impersonate_other_page
|
||||
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
|
||||
from wagtail.wagtailadmin.widgets import Button, ButtonWithDropdownFromHook
|
||||
from wagtail.wagtailcore import hooks
|
||||
|
||||
logger = logging.getLogger()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@hooks.register('register_admin_urls')
|
||||
@@ -28,9 +30,14 @@ def register_admin_urls():
|
||||
]
|
||||
|
||||
|
||||
class SegmentModelIndexView(IndexView):
|
||||
pass
|
||||
|
||||
|
||||
class SegmentModelAdmin(ModelAdmin):
|
||||
"""The base model for the Segments administration interface."""
|
||||
model = Segment
|
||||
index_view_class = SegmentModelIndexView
|
||||
menu_icon = 'group'
|
||||
add_to_settings_menu = False
|
||||
list_display = ('status', 'name', 'create_date', 'edit_date')
|
||||
|
Reference in New Issue
Block a user