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'
|
||||
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
|
||||
|
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 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):
|
||||
|
@ -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'),
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user