Merge remote-tracking branch 'origin/master'
# Conflicts: # src/personalisation/views.py
This commit is contained in:
@ -7,6 +7,7 @@ from personalisation import views
|
|||||||
app_name = 'segment'
|
app_name = 'segment'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^segment/(\d+)/$', views.overview, name='overview'),
|
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]+)/enable/$', views.enable, name='enable'),
|
||||||
url(r'^segment/(?P<segment_id>[0-9]+)/disable/$', views.disable, name='disable'),
|
url(r'^segment/(?P<segment_id>[0-9]+)/disable/$', views.disable, name='disable'),
|
||||||
# TODO: These might no longer be needed when using a modal
|
# TODO: These might no longer be needed when using a modal
|
||||||
|
21
src/personalisation/forms.py
Normal file
21
src/personalisation/forms.py
Normal 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',
|
||||||
|
)
|
||||||
|
|
@ -1,4 +1,7 @@
|
|||||||
import time
|
import time
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
from personalisation.models import AbstractBaseRule, Segment
|
from personalisation.models import AbstractBaseRule, Segment
|
||||||
|
|
||||||
@ -27,6 +30,7 @@ class SegmentMiddleware(object):
|
|||||||
self.add_segment_to_user(segment, request)
|
self.add_segment_to_user(segment, request)
|
||||||
|
|
||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
|
logger.info("User has been added to the following segments: {}".format(request.session['segments']))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def test_rules(self, rules, request):
|
def test_rules(self, rules, request):
|
||||||
|
@ -10,7 +10,8 @@ from django.template.defaultfilters import slugify
|
|||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from modelcluster.models import ClusterableModel
|
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
|
from polymorphic.models import PolymorphicModel
|
||||||
|
|
||||||
@ -64,7 +65,7 @@ pre_save.connect(check_status_change, sender=Segment)
|
|||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class AbstractBaseRule(PolymorphicModel):
|
class AbstractBaseRule(PolymorphicModel):
|
||||||
"""Base for creating rules to segment users with"""
|
"""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):
|
def test_user(self, request):
|
||||||
"""Test if the user matches this rule"""
|
"""Test if the user matches this rule"""
|
||||||
@ -107,7 +108,7 @@ class TimeRule(AbstractBaseRule):
|
|||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class ReferralRule(AbstractBaseRule):
|
class ReferralRule(AbstractBaseRule):
|
||||||
"""Referral rule to segment users based on a regex test"""
|
"""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 = [
|
panels = [
|
||||||
FieldPanel('regex_string'),
|
FieldPanel('regex_string'),
|
||||||
|
@ -4,9 +4,14 @@ from django.forms import ModelForm
|
|||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from wagtail.contrib.modeladmin.views import CreateView
|
||||||
|
|
||||||
from personalisation.models import (
|
from personalisation.models import (
|
||||||
ReferralRule, Segment, TimeRule, VisitCountRule)
|
ReferralRule, Segment, TimeRule, VisitCountRule)
|
||||||
|
from personalisation.models import Segment
|
||||||
|
from personalisation.forms import SegmentForm
|
||||||
|
|
||||||
|
|
||||||
def overview(request):
|
def overview(request):
|
||||||
@ -29,6 +34,7 @@ def disable(request, segment_id):
|
|||||||
|
|
||||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
# TODO: Make these requestable from an exsisting page (the create page.)
|
# TODO: Make these requestable from an exsisting page (the create page.)
|
||||||
# This code might become obselete.
|
# This code might become obselete.
|
||||||
|
|
||||||
@ -67,3 +73,11 @@ def visit_c_rule_embed(request):
|
|||||||
return render(request, 'wagtailadmin/embeds/visit_count_rule.html', {
|
return render(request, 'wagtailadmin/embeds/visit_count_rule.html', {
|
||||||
'form_fields': VisitCountRule,
|
'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
|
||||||
|
Reference in New Issue
Block a user