Link to download CSV of users in segment
This commit is contained in:
@ -13,4 +13,6 @@ urlpatterns = [
|
|||||||
views.copy_page_view, name='copy_page'),
|
views.copy_page_view, name='copy_page'),
|
||||||
url(r'^segment/toggle_segment_view/$',
|
url(r'^segment/toggle_segment_view/$',
|
||||||
views.toggle_segment_view, name='toggle_segment_view'),
|
views.toggle_segment_view, name='toggle_segment_view'),
|
||||||
|
url(r'^segment/users/(?P<segment_id>[0-9]+)$',
|
||||||
|
views.segment_user_data, name='segment_user_data'),
|
||||||
]
|
]
|
||||||
|
@ -103,6 +103,9 @@
|
|||||||
<li><a href="{% url 'segment:toggle' segment.pk %}" title="{% trans "Disable this segment" %}">disable</a></li>
|
<li><a href="{% url 'segment:toggle' segment.pk %}" title="{% trans "Disable this segment" %}">disable</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="{% url 'wagtail_personalisation_segment_modeladmin_edit' segment.pk %}" title="{% trans "Configure this segment" %}">configure this</a></li>
|
<li><a href="{% url 'wagtail_personalisation_segment_modeladmin_edit' segment.pk %}" title="{% trans "Configure this segment" %}">configure this</a></li>
|
||||||
|
{% if segment.is_static %}
|
||||||
|
<li><a href="{% url 'segment:segment_user_data' segment.pk %}" title="{% trans "Download user info" %}">download users csv</a></li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
import csv
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import HttpResponseForbidden, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseForbidden, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
|
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
|
||||||
@ -139,3 +140,32 @@ def copy_page_view(request, page_id, segment_id):
|
|||||||
return HttpResponseRedirect(edit_url)
|
return HttpResponseRedirect(edit_url)
|
||||||
|
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
|
|
||||||
|
|
||||||
|
# CSV download views
|
||||||
|
def segment_user_data(request, segment_id):
|
||||||
|
if request.user.has_perm('wagtailadmin.access_admin'):
|
||||||
|
segment = get_object_or_404(Segment, pk=segment_id)
|
||||||
|
|
||||||
|
response = HttpResponse(content_type='text/csv; charset=utf-8')
|
||||||
|
response['Content-Disposition'] = \
|
||||||
|
'attachment;filename=segment-%s-users.csv' % str(segment_id)
|
||||||
|
|
||||||
|
headers = ['Username']
|
||||||
|
for rule in segment.get_rules():
|
||||||
|
if rule.static:
|
||||||
|
headers.append(rule.get_column_header())
|
||||||
|
|
||||||
|
writer = csv.writer(response)
|
||||||
|
writer.writerow(headers)
|
||||||
|
|
||||||
|
for user in segment.static_users.all():
|
||||||
|
row = [user.username]
|
||||||
|
for rule in segment.get_rules():
|
||||||
|
if rule.static:
|
||||||
|
row.append(rule.get_user_info_string(user))
|
||||||
|
writer.writerow(row)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
Reference in New Issue
Block a user