7

Merge pull request #15 from LabD/feature/logged-in-rule

adding rule for logged in users
This commit is contained in:
Boris Besemer
2016-12-16 13:56:49 +01:00
committed by GitHub
3 changed files with 55 additions and 2 deletions

View File

@ -5,6 +5,12 @@ from django.contrib import admin
from personalisation import models from personalisation import models
class UserIsLoggedInRuleAdminInline(admin.TabularInline):
"""Inline the UserIsLoggedIn Rule into the administration interface for segments"""
model = models.UserIsLoggedInRule
extra = 0
class TimeRuleAdminInline(admin.TabularInline): class TimeRuleAdminInline(admin.TabularInline):
"""Inline the Time Rule into the administration interface for segments""" """Inline the Time Rule into the administration interface for segments"""
model = models.TimeRule model = models.TimeRule
@ -27,7 +33,7 @@ class VisitCountRuleAdminInline(admin.TabularInline):
class SegmentAdmin(admin.ModelAdmin): class SegmentAdmin(admin.ModelAdmin):
"""Add the inlines to the Segment admin interface""" """Add the inlines to the Segment admin interface"""
inlines = (TimeRuleAdminInline, inlines = (UserIsLoggedInRuleAdminInline, TimeRuleAdminInline,
ReferralRuleAdminInline, VisitCountRuleAdminInline) ReferralRuleAdminInline, VisitCountRuleAdminInline)

View File

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.1 on 2016-12-11 12:15
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields
class Migration(migrations.Migration):
dependencies = [
('personalisation', '0004_segment_persistent'),
]
operations = [
migrations.CreateModel(
name='UserIsLoggedInRule',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_logged_in', models.BooleanField(default=False)),
('segment', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='personalisation_userisloggedinrule_related', related_query_name='personalisation_userisloggedinrules', to='personalisation.Segment')),
],
options={
'abstract': False,
},
),
]

View File

@ -180,6 +180,26 @@ class QueryRule(AbstractBaseRule):
return 'Query Rule' return 'Query Rule'
@python_2_unicode_compatible
class UserIsLoggedInRule(AbstractBaseRule):
"""User should be logged in"""
is_logged_in = models.BooleanField(default=False)
panels = [
FieldPanel('is_logged_in'),
]
def __init__(self, *args, **kwargs):
super(UserIsLoggedInRule, self).__init__(*args, **kwargs)
def test_user(self, request=None):
return request.user.is_authenticated() == self.is_logged_in
def __str__(self):
return '{}'.format(self.is_logged_in)
@python_2_unicode_compatible @python_2_unicode_compatible
class Segment(ClusterableModel): class Segment(ClusterableModel):
"""Model for a new segment""" """Model for a new segment"""
@ -206,7 +226,6 @@ class Segment(ClusterableModel):
FieldPanel('persistent'), FieldPanel('persistent'),
]), ]),
], heading="Segment"), ], heading="Segment"),
MultiFieldPanel([ MultiFieldPanel([
InlinePanel( InlinePanel(
"{}_related".format(rule._meta.db_table), "{}_related".format(rule._meta.db_table),