From b47cfd67cc271a034a876b11f3989dd713ff6904 Mon Sep 17 00:00:00 2001 From: Jasper Berghoef Date: Wed, 9 Nov 2016 15:33:26 +0100 Subject: [PATCH] Add visit count and days to segment overview --- .../migrations/0017_auto_20161109_1435.py | 27 +++++++++++++ .../migrations/0018_segment_visit_count.py | 20 ++++++++++ src/personalisation/models.py | 8 ++-- .../personalisation/segment/calendar_icon.png | Bin 0 -> 794 bytes .../static/personalisation/segment/index.css | 36 ++++++++++++++++++ .../personalisation/segment/rocket_icon.png | Bin 0 -> 1525 bytes .../personalisation/segment/index.html | 6 ++- src/personalisation/templatetags/__init__.py | 0 .../templatetags/personalisation_filters.py | 13 +++++++ src/personalisation/wagtail_hooks.py | 5 ++- 10 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 src/personalisation/migrations/0017_auto_20161109_1435.py create mode 100644 src/personalisation/migrations/0018_segment_visit_count.py create mode 100644 src/personalisation/static/personalisation/segment/calendar_icon.png create mode 100644 src/personalisation/static/personalisation/segment/rocket_icon.png create mode 100644 src/personalisation/templatetags/__init__.py create mode 100644 src/personalisation/templatetags/personalisation_filters.py diff --git a/src/personalisation/migrations/0017_auto_20161109_1435.py b/src/personalisation/migrations/0017_auto_20161109_1435.py new file mode 100644 index 0000000..175dd80 --- /dev/null +++ b/src/personalisation/migrations/0017_auto_20161109_1435.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-11-09 13:35 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('personalisation', '0016_auto_20161109_1255'), + ] + + operations = [ + migrations.AddField( + model_name='segment', + name='create_date', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='segment', + name='edit_date', + field=models.DateTimeField(auto_now=True), + ), + ] diff --git a/src/personalisation/migrations/0018_segment_visit_count.py b/src/personalisation/migrations/0018_segment_visit_count.py new file mode 100644 index 0000000..c5360e2 --- /dev/null +++ b/src/personalisation/migrations/0018_segment_visit_count.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-11-09 14:29 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('personalisation', '0017_auto_20161109_1435'), + ] + + operations = [ + migrations.AddField( + model_name='segment', + name='visit_count', + field=models.PositiveIntegerField(default=0), + ), + ] diff --git a/src/personalisation/models.py b/src/personalisation/models.py index 4262878..e0f9e81 100644 --- a/src/personalisation/models.py +++ b/src/personalisation/models.py @@ -6,18 +6,18 @@ from datetime import datetime from django.db import models from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ -from modelcluster.fields import ParentalKey from modelcluster.models import ClusterableModel -from wagtail.wagtailadmin.edit_handlers import FieldPanel, InlinePanel -from wagtail.wagtailcore.models import Orderable +from wagtail.wagtailadmin.edit_handlers import FieldPanel from polymorphic.models import PolymorphicModel - @python_2_unicode_compatible class Segment(ClusterableModel): """Model for a new segment""" name = models.CharField(max_length=255) + create_date = models.DateTimeField(auto_now_add=True) + edit_date = models.DateTimeField(auto_now=True) + visit_count = models.PositiveIntegerField(default=0) STATUS_CHOICES = ( ('enabled', 'Enabled'), ('disabled', 'Disabled'), diff --git a/src/personalisation/static/personalisation/segment/calendar_icon.png b/src/personalisation/static/personalisation/segment/calendar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a655cd39452fa2b0e0c30bfb3cd3e1ac1e7c87a2 GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*Fy#djUQnuBl*9Utgb)kdOugKAD9n zDJc*hL;+AakPBo3$;`~m(9lqbEKnna0g;6$hKRt`0M$b@rh@@QHY+O&$bd@$xj;#v z2!w>F0g@1n5OIi>jEoGRn!>`u?Ck8EoE)GOP#kDZZf-6_s;H<4D4U<3pO=^Saz-96 z(CKz1L4Lu1e>2Jc`xC_w7RtKvAES4~N?Fe3zgV_@2-%89k zejd(~bI<=(U*aLt!zKyl8!a|+?waR!mw|zCt*47)NJZS!DcAEJJMg%sr}V9O7I(S& z{mpwPBzLO({4XDslq6B~WX;y!yPofhabOovX$sL`sW3V5-EhTYp|1?zKOdZEBNn3Y z=Fy9zb7d3kBNp|ur@u>W+1znfIPsJZoeS>~-z zg1f5Y>uh~q$m#R#&h$3Cy!mCnhP2wno*9*IlrQLbwRO4Ie)h2mi^{)wd3L_d?!(Eq zuCSWDlz5-^=kc>Ed6{e1usX+o{PtXx&*L`JEVhcDf5q%4FlD=L$uhEWJd!)zF|g%K zuJWUk1&>r;pMClKTHofGu}YismVYhOy0`j8shlt_6m`Rp+_Jt>L22U1cw4w0_DZywB1(cI2w=4lcj zqIm641V{GjXqQEi`fdIyHm$2?cZ3~MI<}vu)eAXWO=|@l4-)9r-SDbGrXk4>}^FKB_9;f63}G zTbI|5y5KkV*kg|!@1IpvRLpSbp@*&uX@FdL*kOk~f$=kp|6m-zn1g&d>fj=<^78VH z0pN1T7l$8yc&@s-Ixm%#l{vi2;rTQ&n!w6-*=3h;x(6G(LY^n6s;a90z#MYOA-x!T zI70f#o`D;nj0!jbGsf10qUQ(-ED_K^0F;a3Kz5BdIBYt>U7rHh2#m`52+9Mqu`dGT zb25$VuSWwM17IFpPpzq`kJU zW$-$t5o2y4Z1_DD5nOQiJ~P>FoLgUCKZX0@emdTR(cSH%`XK`p?t|xB{4X#8$conH z=H?lp>}{G=;3P7!1Si60`iEkJ$*i*qI=SYBJYXojK-$(C1u=Qq6Fniu@KK8QAD#6-Gc=oCR>{X-_^dNxpFQa`cEc{4W-)Lt5%;%~DBla(Q*B8Oj ztX$9cR4$O%Z+i=<9dQ4GW3Si1y(e~~KS}Y~mZQW>Cs~4`qiya)WAScFCp|?HZ3pBb z29K4t9+w9PVjiR}(^D?j8pIq6IVYLYPL6WghK7bYG>;L+%@uh9=dWcZjLYHvJKLvQ z>^c|l48KSB5w3hInITX!6US4!`S*Ztv5ba z4VQYBrQ($7yM$(vR(jSmu7R+%&Q8tUrmsIaRTxLD>0HUr$>V0VSs zs!4=$Y)U=0O=gBXZjr9akt{N+1=w!@w|WHUCHY*TQJcZU50?s3O{=Z@kcmEmD+wS? zE9Qa- z%0__-epR%w$QNT$6+&H%)z`b&ZO0Q|$p8h8&dWm!72DU}&9jCS2wY^6(XHxZQTjCV zXzadIr4TqBt~;mz*Zlf3Vl*@IBS=O!QxJmzYaV0;(K_<3G8{9J~j!UCf3&0&Vmg-COGq($3T9v zruRq{hGc-I@M`&vT5kV7^nz>fLnyvXQ7MHkz~_v7J735mT(e#>K$mVkb?;^k0mz*p`$71yE5d`uT^AdOw2FM(Skbqt+rdMN@@DekDPXJxe*C)6Y}c zqlmq0-T!m1kg?b(U`{PqAb5eh)SI?QE*AF_RMV8=_UOTn;xiR zA?Fw)SH%F5gr?$n0<$&e#`&oLx6#SUocUu$Gsfp2e~4L^7f%eP%xcYU?Jk}=&g`dG5E6otPt7PJq#DZVR}!Mp8`n+}51Im1OX|4VM%Z@>K}OG!$D z%Tu5d{ZPRP;0O8>Tcfo_k3zvginEKo*HkU$Trk*_cyrz00000NkvXXu0mjfEfw9m literal 0 HcmV?d00001 diff --git a/src/personalisation/templates/modeladmin/personalisation/segment/index.html b/src/personalisation/templates/modeladmin/personalisation/segment/index.html index 8ae4993..006a6e2 100644 --- a/src/personalisation/templates/modeladmin/personalisation/segment/index.html +++ b/src/personalisation/templates/modeladmin/personalisation/segment/index.html @@ -1,5 +1,5 @@ {% extends "modeladmin/index.html" %} -{% load i18n staticfiles modeladmin_tags %} +{% load i18n staticfiles modeladmin_tags personalisation_filters %} {% block content_main %}
@@ -23,6 +23,10 @@ {% for segment in object_list %}

{{ segment }}

+
    +
  • {{ segment.visit_count }}
  • +
  • {{ segment.create_date|days_since:segment.status }}
  • +
{% if user_can_create %}
    {% if segment.status == "disabled" %} diff --git a/src/personalisation/templatetags/__init__.py b/src/personalisation/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/personalisation/templatetags/personalisation_filters.py b/src/personalisation/templatetags/personalisation_filters.py new file mode 100644 index 0000000..304e941 --- /dev/null +++ b/src/personalisation/templatetags/personalisation_filters.py @@ -0,0 +1,13 @@ +from django.utils import timezone + +from django.template import Library + +register = Library() + +@register.filter(name='days_since') +def active_days(value, arg): + """Returns the number of days the segment has been active""" + if arg == 'enabled': + delta = timezone.now() - value + return delta.days + return 0 \ No newline at end of file diff --git a/src/personalisation/wagtail_hooks.py b/src/personalisation/wagtail_hooks.py index 6d4608a..3ebdd54 100644 --- a/src/personalisation/wagtail_hooks.py +++ b/src/personalisation/wagtail_hooks.py @@ -1,5 +1,6 @@ from django.conf.urls import include, url from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register +from wagtail.contrib.modeladmin.views import IndexView from wagtail.wagtailcore import hooks from personalisation import admin_urls @@ -22,10 +23,10 @@ class SegmentModelAdmin(ModelAdmin): model = Segment menu_icon = 'group' add_to_settings_menu = False - list_display = ('status', 'name') - inspect_view_enabled = True + list_display = ('status', 'name', 'create_date', 'edit_date') index_view_extra_css = ['personalisation/segment/index.css'] form_view_extra_css = ['personalisation/segment/form.css'] + inspect_view_enabled = True modeladmin_register(SegmentModelAdmin)