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):
|
def __str__(self):
|
||||||
return "Abstract segmentation rule"
|
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:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
@@ -67,6 +74,18 @@ class TimeRule(AbstractBaseRule):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _('Time Rule')
|
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
|
@python_2_unicode_compatible
|
||||||
class DayRule(AbstractBaseRule):
|
class DayRule(AbstractBaseRule):
|
||||||
@@ -115,6 +134,20 @@ class DayRule(AbstractBaseRule):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _('Day Rule')
|
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
|
@python_2_unicode_compatible
|
||||||
class ReferralRule(AbstractBaseRule):
|
class ReferralRule(AbstractBaseRule):
|
||||||
@@ -326,6 +359,13 @@ class Segment(ClusterableModel):
|
|||||||
"""Returns a string with a slug for the segment"""
|
"""Returns a string with a slug for the segment"""
|
||||||
return slugify(self.name.lower())
|
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):
|
def check_status_change(sender, instance, *args, **kwargs):
|
||||||
"""Check if the status has changed. Alter dates accordingly."""
|
"""Check if the status has changed. Alter dates accordingly."""
|
||||||
|
@@ -35,42 +35,13 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="inspect segment_rules">
|
<ul class="inspect segment_rules">
|
||||||
{% for rule in segment.personalisation_timerule_related.all %}
|
{% for rule in segment.get_rules %}
|
||||||
<li class="time_rule">
|
<li class="{{ rule.encoded_name }}">
|
||||||
These users visit between
|
{{ rule.description.title }}
|
||||||
<span>{{ rule.start_time }} and {{ rule.end_time }}</span>
|
<span>{{ rule.description.value }}</span>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% 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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -6,15 +6,17 @@ from django.conf.urls import include, url
|
|||||||
from django.shortcuts import reverse
|
from django.shortcuts import reverse
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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 import admin_urls
|
||||||
from personalisation.app_settings import segments_adapter
|
from personalisation.app_settings import segments_adapter
|
||||||
from personalisation.models import PersonalisablePage, Segment
|
from personalisation.models import PersonalisablePage, Segment
|
||||||
from personalisation.utils import impersonate_other_page
|
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')
|
@hooks.register('register_admin_urls')
|
||||||
@@ -28,9 +30,14 @@ def register_admin_urls():
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SegmentModelIndexView(IndexView):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class SegmentModelAdmin(ModelAdmin):
|
class SegmentModelAdmin(ModelAdmin):
|
||||||
"""The base model for the Segments administration interface."""
|
"""The base model for the Segments administration interface."""
|
||||||
model = Segment
|
model = Segment
|
||||||
|
index_view_class = SegmentModelIndexView
|
||||||
menu_icon = 'group'
|
menu_icon = 'group'
|
||||||
add_to_settings_menu = False
|
add_to_settings_menu = False
|
||||||
list_display = ('status', 'name', 'create_date', 'edit_date')
|
list_display = ('status', 'name', 'create_date', 'edit_date')
|
||||||
|
Reference in New Issue
Block a user