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 import json
from collections import OrderedDict
from django import forms
from django.core.serializers.json import DjangoJSONEncoder from django.core.serializers.json import DjangoJSONEncoder
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.translation import ugettext as _
from typing import Tuple from typing import Tuple
from pretix.base.models import Order
from pretix.base.signals import register_data_exporters from pretix.base.signals import register_data_exporters
@@ -164,13 +168,29 @@ class JSONExporter(BaseExporter):
class MailExporter(BaseExporter): class MailExporter(BaseExporter):
identifier = 'mailaddrs' identifier = 'mailaddrs'
verbose_name = 'Email addresses (text file)' verbose_name = _('Email addresses (text file)')
def render(self, form_data: dict): 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)) data = "\r\n".join(set(a['email'] for a in addrs))
return 'pretixemails.txt', 'text/plain', data.encode("utf-8") 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") @receiver(register_data_exporters, dispatch_uid="exporter_json")
def register_json_export(sender, **kwargs): def register_json_export(sender, **kwargs):