Added filters for the MailExporter

This commit is contained in:
Raphael Michel
2016-06-27 19:23:43 +02:00
parent e09f213f0c
commit f68ada1f41

View File

@@ -1,9 +1,13 @@
import json
from collections import OrderedDict
from django import forms
from django.core.serializers.json import DjangoJSONEncoder
from django.dispatch import receiver
from django.utils.translation import ugettext as _
from typing import Tuple
from pretix.base.models import Order
from pretix.base.signals import register_data_exporters
@@ -164,13 +168,29 @@ class JSONExporter(BaseExporter):
class MailExporter(BaseExporter):
identifier = 'mailaddrs'
verbose_name = 'Email addresses (text file)'
verbose_name = _('Email addresses (text file)')
def render(self, form_data: dict):
addrs = self.event.orders.values('email')
qs = self.event.orders.filter(status__in=form_data['status'])
addrs = qs.values('email')
data = "\r\n".join(set(a['email'] for a in addrs))
return 'pretixemails.txt', 'text/plain', data.encode("utf-8")
@property
def export_form_fields(self):
return OrderedDict(
[
('status',
forms.MultipleChoiceField(
label=_('Filter by status'),
initial=[Order.STATUS_PENDING, Order.STATUS_PAID],
choices=Order.STATUS_CHOICE,
widget=forms.CheckboxSelectMultiple,
required=False
)),
]
)
@receiver(register_data_exporters, dispatch_uid="exporter_json")
def register_json_export(sender, **kwargs):