forked from CGM_Public/pretix_original
Remove hack for gift card exporters, it's not required
This commit is contained in:
@@ -884,76 +884,74 @@ class QuotaListExporter(ListExporter):
|
|||||||
return '{}_quotas'.format(self.event.slug)
|
return '{}_quotas'.format(self.event.slug)
|
||||||
|
|
||||||
|
|
||||||
def generate_GiftCardTransactionListExporter(organizer): # hackhack
|
class GiftcardTransactionListExporter(ListExporter):
|
||||||
class GiftcardTransactionListExporter(ListExporter):
|
identifier = 'giftcardtransactionlist'
|
||||||
identifier = 'giftcardtransactionlist'
|
verbose_name = gettext_lazy('Gift card transactions')
|
||||||
verbose_name = gettext_lazy('Gift card transactions')
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def additional_form_fields(self):
|
def additional_form_fields(self):
|
||||||
d = [
|
d = [
|
||||||
('date_from',
|
('date_from',
|
||||||
forms.DateField(
|
forms.DateField(
|
||||||
label=_('Start date'),
|
label=_('Start date'),
|
||||||
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
|
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
|
||||||
required=False,
|
required=False,
|
||||||
)),
|
)),
|
||||||
('date_to',
|
('date_to',
|
||||||
forms.DateField(
|
forms.DateField(
|
||||||
label=_('End date'),
|
label=_('End date'),
|
||||||
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
|
widget=forms.DateInput(attrs={'class': 'datepickerfield'}),
|
||||||
required=False,
|
required=False,
|
||||||
)),
|
)),
|
||||||
|
]
|
||||||
|
d = OrderedDict(d)
|
||||||
|
return d
|
||||||
|
|
||||||
|
def iterate_list(self, form_data):
|
||||||
|
qs = GiftCardTransaction.objects.filter(
|
||||||
|
card__issuer=self.organizer,
|
||||||
|
).order_by('datetime').select_related('card', 'order', 'order__event')
|
||||||
|
|
||||||
|
if form_data.get('date_from'):
|
||||||
|
date_value = form_data.get('date_from')
|
||||||
|
if isinstance(date_value, str):
|
||||||
|
date_value = dateutil.parser.parse(date_value).date()
|
||||||
|
qs = qs.filter(
|
||||||
|
datetime__gte=make_aware(datetime.combine(date_value, time(0, 0, 0)), self.timezone)
|
||||||
|
)
|
||||||
|
|
||||||
|
if form_data.get('date_to'):
|
||||||
|
date_value = form_data.get('date_to')
|
||||||
|
if isinstance(date_value, str):
|
||||||
|
date_value = dateutil.parser.parse(date_value).date()
|
||||||
|
|
||||||
|
qs = qs.filter(
|
||||||
|
datetime__lte=make_aware(datetime.combine(date_value, time(23, 59, 59, 999999)), self.timezone)
|
||||||
|
)
|
||||||
|
|
||||||
|
headers = [
|
||||||
|
_('Gift card code'),
|
||||||
|
_('Test mode'),
|
||||||
|
_('Date'),
|
||||||
|
_('Amount'),
|
||||||
|
_('Currency'),
|
||||||
|
_('Order'),
|
||||||
|
]
|
||||||
|
yield headers
|
||||||
|
|
||||||
|
for obj in qs:
|
||||||
|
row = [
|
||||||
|
obj.card.secret,
|
||||||
|
_('TEST MODE') if obj.card.testmode else '',
|
||||||
|
obj.datetime.astimezone(self.timezone).strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
obj.value,
|
||||||
|
obj.card.currency,
|
||||||
|
obj.order.full_code if obj.order else None,
|
||||||
]
|
]
|
||||||
d = OrderedDict(d)
|
yield row
|
||||||
return d
|
|
||||||
|
|
||||||
def iterate_list(self, form_data):
|
def get_filename(self):
|
||||||
qs = GiftCardTransaction.objects.filter(
|
return '{}_giftcardtransactions'.format(self.organizer.slug)
|
||||||
card__issuer=organizer,
|
|
||||||
).order_by('datetime').select_related('card', 'order', 'order__event')
|
|
||||||
|
|
||||||
if form_data.get('date_from'):
|
|
||||||
date_value = form_data.get('date_from')
|
|
||||||
if isinstance(date_value, str):
|
|
||||||
date_value = dateutil.parser.parse(date_value).date()
|
|
||||||
qs = qs.filter(
|
|
||||||
datetime__gte=make_aware(datetime.combine(date_value, time(0, 0, 0)), self.timezone)
|
|
||||||
)
|
|
||||||
|
|
||||||
if form_data.get('date_to'):
|
|
||||||
date_value = form_data.get('date_to')
|
|
||||||
if isinstance(date_value, str):
|
|
||||||
date_value = dateutil.parser.parse(date_value).date()
|
|
||||||
|
|
||||||
qs = qs.filter(
|
|
||||||
datetime__lte=make_aware(datetime.combine(date_value, time(23, 59, 59, 999999)), self.timezone)
|
|
||||||
)
|
|
||||||
|
|
||||||
headers = [
|
|
||||||
_('Gift card code'),
|
|
||||||
_('Test mode'),
|
|
||||||
_('Date'),
|
|
||||||
_('Amount'),
|
|
||||||
_('Currency'),
|
|
||||||
_('Order'),
|
|
||||||
]
|
|
||||||
yield headers
|
|
||||||
|
|
||||||
for obj in qs:
|
|
||||||
row = [
|
|
||||||
obj.card.secret,
|
|
||||||
_('TEST MODE') if obj.card.testmode else '',
|
|
||||||
obj.datetime.astimezone(self.timezone).strftime('%Y-%m-%d %H:%M:%S'),
|
|
||||||
obj.value,
|
|
||||||
obj.card.currency,
|
|
||||||
obj.order.full_code if obj.order else None,
|
|
||||||
]
|
|
||||||
yield row
|
|
||||||
|
|
||||||
def get_filename(self):
|
|
||||||
return '{}_giftcardtransactions'.format(organizer.slug)
|
|
||||||
return GiftcardTransactionListExporter
|
|
||||||
|
|
||||||
|
|
||||||
class GiftcardRedemptionListExporter(ListExporter):
|
class GiftcardRedemptionListExporter(ListExporter):
|
||||||
@@ -1000,114 +998,111 @@ class GiftcardRedemptionListExporter(ListExporter):
|
|||||||
return '{}_giftcardredemptions'.format(self.event.slug)
|
return '{}_giftcardredemptions'.format(self.event.slug)
|
||||||
|
|
||||||
|
|
||||||
def generate_GiftCardListExporter(organizer): # hackhack
|
class GiftcardListExporter(ListExporter):
|
||||||
class GiftcardListExporter(ListExporter):
|
identifier = 'giftcardlist'
|
||||||
identifier = 'giftcardlist'
|
verbose_name = gettext_lazy('Gift cards')
|
||||||
verbose_name = gettext_lazy('Gift cards')
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def additional_form_fields(self):
|
def additional_form_fields(self):
|
||||||
return OrderedDict(
|
return OrderedDict(
|
||||||
[
|
[
|
||||||
('date', forms.DateTimeField(
|
('date', forms.DateTimeField(
|
||||||
label=_('Show value at'),
|
label=_('Show value at'),
|
||||||
initial=now(),
|
initial=now(),
|
||||||
)),
|
)),
|
||||||
('testmode', forms.ChoiceField(
|
('testmode', forms.ChoiceField(
|
||||||
label=_('Test mode'),
|
label=_('Test mode'),
|
||||||
choices=(
|
choices=(
|
||||||
('', _('All')),
|
('', _('All')),
|
||||||
('yes', _('Test mode')),
|
('yes', _('Test mode')),
|
||||||
('no', _('Live')),
|
('no', _('Live')),
|
||||||
),
|
),
|
||||||
initial='no',
|
initial='no',
|
||||||
required=False
|
required=False
|
||||||
)),
|
)),
|
||||||
('state', forms.ChoiceField(
|
('state', forms.ChoiceField(
|
||||||
label=_('Status'),
|
label=_('Status'),
|
||||||
choices=(
|
choices=(
|
||||||
('', _('All')),
|
('', _('All')),
|
||||||
('empty', _('Empty')),
|
('empty', _('Empty')),
|
||||||
('valid_value', _('Valid and with value')),
|
('valid_value', _('Valid and with value')),
|
||||||
('expired_value', _('Expired and with value')),
|
('expired_value', _('Expired and with value')),
|
||||||
('expired', _('Expired')),
|
('expired', _('Expired')),
|
||||||
),
|
),
|
||||||
initial='valid_value',
|
initial='valid_value',
|
||||||
required=False
|
required=False
|
||||||
))
|
))
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def iterate_list(self, form_data):
|
|
||||||
s = GiftCardTransaction.objects.filter(
|
|
||||||
card=OuterRef('pk'),
|
|
||||||
datetime__lte=form_data['date']
|
|
||||||
).order_by().values('card').annotate(s=Sum('value')).values('s')
|
|
||||||
qs = organizer.issued_gift_cards.filter(
|
|
||||||
issuance__lte=form_data['date']
|
|
||||||
).annotate(
|
|
||||||
cached_value=Coalesce(Subquery(s), Decimal('0.00')),
|
|
||||||
).order_by('issuance').prefetch_related(
|
|
||||||
'transactions', 'transactions__order', 'transactions__order__event', 'transactions__order__invoices'
|
|
||||||
)
|
|
||||||
|
|
||||||
if form_data.get('testmode') == 'yes':
|
|
||||||
qs = qs.filter(testmode=True)
|
|
||||||
elif form_data.get('testmode') == 'no':
|
|
||||||
qs = qs.filter(testmode=False)
|
|
||||||
|
|
||||||
if form_data.get('state') == 'empty':
|
|
||||||
qs = qs.filter(cached_value=0)
|
|
||||||
elif form_data.get('state') == 'valid_value':
|
|
||||||
qs = qs.exclude(cached_value=0).filter(Q(expires__isnull=True) | Q(expires__gte=form_data['date']))
|
|
||||||
elif form_data.get('state') == 'expired_value':
|
|
||||||
qs = qs.exclude(cached_value=0).filter(expires__lt=form_data['date'])
|
|
||||||
elif form_data.get('state') == 'expired':
|
|
||||||
qs = qs.filter(expires__lt=form_data['date'])
|
|
||||||
|
|
||||||
headers = [
|
|
||||||
_('Gift card code'),
|
|
||||||
_('Test mode card'),
|
|
||||||
_('Creation date'),
|
|
||||||
_('Expiry date'),
|
|
||||||
_('Special terms and conditions'),
|
|
||||||
_('Currency'),
|
|
||||||
_('Current value'),
|
|
||||||
_('Created in order'),
|
|
||||||
_('Last invoice number of order'),
|
|
||||||
_('Last invoice date of order'),
|
|
||||||
]
|
]
|
||||||
yield headers
|
)
|
||||||
|
|
||||||
tz = get_current_timezone()
|
def iterate_list(self, form_data):
|
||||||
for obj in qs:
|
s = GiftCardTransaction.objects.filter(
|
||||||
o = None
|
card=OuterRef('pk'),
|
||||||
i = None
|
datetime__lte=form_data['date']
|
||||||
trans = list(obj.transactions.all())
|
).order_by().values('card').annotate(s=Sum('value')).values('s')
|
||||||
if trans:
|
qs = self.organizer.issued_gift_cards.filter(
|
||||||
o = trans[0].order
|
issuance__lte=form_data['date']
|
||||||
if o:
|
).annotate(
|
||||||
invs = list(o.invoices.all())
|
cached_value=Coalesce(Subquery(s), Decimal('0.00')),
|
||||||
if invs:
|
).order_by('issuance').prefetch_related(
|
||||||
i = invs[-1]
|
'transactions', 'transactions__order', 'transactions__order__event', 'transactions__order__invoices'
|
||||||
row = [
|
)
|
||||||
obj.secret,
|
|
||||||
_('Yes') if obj.testmode else _('No'),
|
|
||||||
obj.issuance.astimezone(tz).date().strftime('%Y-%m-%d'),
|
|
||||||
obj.expires.astimezone(tz).date().strftime('%Y-%m-%d') if obj.expires else '',
|
|
||||||
obj.conditions or '',
|
|
||||||
obj.currency,
|
|
||||||
obj.cached_value,
|
|
||||||
o.full_code if o else '',
|
|
||||||
i.number if i else '',
|
|
||||||
i.date.strftime('%Y-%m-%d') if i else '',
|
|
||||||
]
|
|
||||||
yield row
|
|
||||||
|
|
||||||
def get_filename(self):
|
if form_data.get('testmode') == 'yes':
|
||||||
return '{}_giftcards'.format(organizer.slug)
|
qs = qs.filter(testmode=True)
|
||||||
|
elif form_data.get('testmode') == 'no':
|
||||||
|
qs = qs.filter(testmode=False)
|
||||||
|
|
||||||
return GiftcardListExporter
|
if form_data.get('state') == 'empty':
|
||||||
|
qs = qs.filter(cached_value=0)
|
||||||
|
elif form_data.get('state') == 'valid_value':
|
||||||
|
qs = qs.exclude(cached_value=0).filter(Q(expires__isnull=True) | Q(expires__gte=form_data['date']))
|
||||||
|
elif form_data.get('state') == 'expired_value':
|
||||||
|
qs = qs.exclude(cached_value=0).filter(expires__lt=form_data['date'])
|
||||||
|
elif form_data.get('state') == 'expired':
|
||||||
|
qs = qs.filter(expires__lt=form_data['date'])
|
||||||
|
|
||||||
|
headers = [
|
||||||
|
_('Gift card code'),
|
||||||
|
_('Test mode card'),
|
||||||
|
_('Creation date'),
|
||||||
|
_('Expiry date'),
|
||||||
|
_('Special terms and conditions'),
|
||||||
|
_('Currency'),
|
||||||
|
_('Current value'),
|
||||||
|
_('Created in order'),
|
||||||
|
_('Last invoice number of order'),
|
||||||
|
_('Last invoice date of order'),
|
||||||
|
]
|
||||||
|
yield headers
|
||||||
|
|
||||||
|
tz = get_current_timezone()
|
||||||
|
for obj in qs:
|
||||||
|
o = None
|
||||||
|
i = None
|
||||||
|
trans = list(obj.transactions.all())
|
||||||
|
if trans:
|
||||||
|
o = trans[0].order
|
||||||
|
if o:
|
||||||
|
invs = list(o.invoices.all())
|
||||||
|
if invs:
|
||||||
|
i = invs[-1]
|
||||||
|
row = [
|
||||||
|
obj.secret,
|
||||||
|
_('Yes') if obj.testmode else _('No'),
|
||||||
|
obj.issuance.astimezone(tz).date().strftime('%Y-%m-%d'),
|
||||||
|
obj.expires.astimezone(tz).date().strftime('%Y-%m-%d') if obj.expires else '',
|
||||||
|
obj.conditions or '',
|
||||||
|
obj.currency,
|
||||||
|
obj.cached_value,
|
||||||
|
o.full_code if o else '',
|
||||||
|
i.number if i else '',
|
||||||
|
i.date.strftime('%Y-%m-%d') if i else '',
|
||||||
|
]
|
||||||
|
yield row
|
||||||
|
|
||||||
|
def get_filename(self):
|
||||||
|
return '{}_giftcards'.format(self.organizer.slug)
|
||||||
|
|
||||||
|
|
||||||
@receiver(register_data_exporters, dispatch_uid="exporter_orderlist")
|
@receiver(register_data_exporters, dispatch_uid="exporter_orderlist")
|
||||||
@@ -1147,9 +1142,9 @@ def register_multievent_i_giftcardredemptionlist_exporter(sender, **kwargs):
|
|||||||
|
|
||||||
@receiver(register_multievent_data_exporters, dispatch_uid="multiexporter_giftcardlist")
|
@receiver(register_multievent_data_exporters, dispatch_uid="multiexporter_giftcardlist")
|
||||||
def register_multievent_i_giftcardlist_exporter(sender, **kwargs):
|
def register_multievent_i_giftcardlist_exporter(sender, **kwargs):
|
||||||
return generate_GiftCardListExporter(sender)
|
return GiftcardListExporter
|
||||||
|
|
||||||
|
|
||||||
@receiver(register_multievent_data_exporters, dispatch_uid="multiexporter_giftcardtransactionlist")
|
@receiver(register_multievent_data_exporters, dispatch_uid="multiexporter_giftcardtransactionlist")
|
||||||
def register_multievent_i_giftcardtransactionlist_exporter(sender, **kwargs):
|
def register_multievent_i_giftcardtransactionlist_exporter(sender, **kwargs):
|
||||||
return generate_GiftCardTransactionListExporter(sender)
|
return GiftcardTransactionListExporter
|
||||||
|
|||||||
Reference in New Issue
Block a user