7

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/personalisation/views.py
This commit is contained in:
Jasper Berghoef
2016-11-10 12:51:34 +01:00
7 changed files with 45 additions and 4 deletions

View File

@ -7,6 +7,7 @@ from personalisation import views
app_name = 'segment'
urlpatterns = [
url(r'^segment/(\d+)/$', views.overview, name='overview'),
# url(r'^segment/create/$', views.CreateSegmentView.as_view(), name='create'),
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'),
# TODO: These might no longer be needed when using a modal

View File

@ -0,0 +1,21 @@
from __future__ import absolute_import, unicode_literals
from django import forms
from django.conf import settings
from django.utils.translation import ugettext as _
from wagtail.wagtailcore.models import Page
from personalisation.models import Segment
class SegmentForm(forms.ModelForm):
"""
Custom Segment form for the create view
"""
class Meta:
model = Segment
fields = (
'name',
'status',
)

View File

@ -1,4 +1,7 @@
import time
import logging
logger = logging.getLogger()
from personalisation.models import AbstractBaseRule, Segment
@ -27,6 +30,7 @@ class SegmentMiddleware(object):
self.add_segment_to_user(segment, request)
response = self.get_response(request)
logger.info("User has been added to the following segments: {}".format(request.session['segments']))
return response
def test_rules(self, rules, request):

View File

@ -10,7 +10,8 @@ from django.template.defaultfilters import slugify
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from modelcluster.models import ClusterableModel
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from modelcluster.fields import ParentalKey
from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel
from polymorphic.models import PolymorphicModel
@ -64,7 +65,7 @@ pre_save.connect(check_status_change, sender=Segment)
@python_2_unicode_compatible
class AbstractBaseRule(PolymorphicModel):
"""Base for creating rules to segment users with"""
segment = models.ForeignKey(to=Segment, related_name="rules")
segment = ParentalKey('Segment', related_name="rules")
def test_user(self, request):
"""Test if the user matches this rule"""
@ -107,7 +108,7 @@ class TimeRule(AbstractBaseRule):
@python_2_unicode_compatible
class ReferralRule(AbstractBaseRule):
"""Referral rule to segment users based on a regex test"""
regex_string = models.TextField()
regex_string = models.TextField(_("Regex string to match the referer with"))
panels = [
FieldPanel('regex_string'),

View File

@ -4,9 +4,14 @@ from django.forms import ModelForm
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from wagtail.contrib.modeladmin.views import CreateView
from personalisation.models import (
ReferralRule, Segment, TimeRule, VisitCountRule)
from personalisation.models import Segment
from personalisation.forms import SegmentForm
def overview(request):
@ -29,6 +34,7 @@ def disable(request, segment_id):
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
<<<<<<< HEAD
# TODO: Make these requestable from an exsisting page (the create page.)
# This code might become obselete.
@ -67,3 +73,11 @@ def visit_c_rule_embed(request):
return render(request, 'wagtailadmin/embeds/visit_count_rule.html', {
'form_fields': VisitCountRule,
})
=======
class CreateSegmentView(CreateView):
page_title = _("Add segment")
form_class = SegmentForm
template_name = 'modeladmin/personalisation/segment/create.html'
header_icon = 'folder-open-1'
>>>>>>> origin/master

View File