7

Allows switching between list and dashboard view

This commit is contained in:
Jasper Berghoef
2017-05-31 12:31:30 +02:00
committed by Michael van Tellingen
parent 45f2de62ea
commit 7034c09d4a
35 changed files with 67 additions and 209 deletions

View File

@ -12,12 +12,12 @@ from wagtail_personalisation.models import PersonalisablePage, Segment
class SegmentModelIndexView(IndexView):
"""Placeholder for additional dashboard functionality."""
"""Placeholder for additional list functionality."""
pass
class SegmentModelDashboardView(IndexView):
"""Placeholder for additional dashboard functionality."""
"""Additional dashboard functionality."""
def media(self):
return forms.Media(
css={'all': ['css/dashboard.css']},
@ -48,6 +48,11 @@ class SegmentModelAdmin(ModelAdmin):
def index_view(self, request):
kwargs = {'model_admin': self}
view_class = self.index_view_class
request.session.setdefault('segment_view', 'list')
if request.session['segment_view'] != 'list':
view_class = self.dashboard_view_class
return view_class.as_view(**kwargs)(request)
def visits(self, obj):
@ -59,6 +64,27 @@ class SegmentModelAdmin(ModelAdmin):
days=obj.get_active_days())
def toggle_segment_view(request):
"""Toggle between the list view and dashboard view.
:param request: The http request
:type request: django.http.HttpRequest
:returns: A redirect to the original page
:rtype: django.http.HttpResponseRedirect
"""
if request.user.has_perm('wagtailadmin.access_admin'):
if request.session['segment_view'] == 'list':
request.session['segment_view'] = 'dashboard'
elif request.session['segment_view'] != 'list':
request.session['segment_view'] = 'list'
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
return HttpResponseForbidden()
def toggle(request, segment_id):
"""Toggle the status of the selected segment.