mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Order overview PDF: Allow to filter by subevent date
This commit is contained in:
@@ -112,7 +112,7 @@ def dictsum(*dicts) -> dict:
|
|||||||
|
|
||||||
def order_overview(
|
def order_overview(
|
||||||
event: Event, subevent: SubEvent=None, date_filter='', date_from=None, date_until=None, fees=False,
|
event: Event, subevent: SubEvent=None, date_filter='', date_from=None, date_until=None, fees=False,
|
||||||
admission_only=False, base_qs=None, base_fees_qs=None,
|
admission_only=False, base_qs=None, base_fees_qs=None, subevent_date_from=None, subevent_date_until=None
|
||||||
) -> Tuple[List[Tuple[ItemCategory, List[Item]]], Dict[str, Tuple[Decimal, Decimal]]]:
|
) -> Tuple[List[Tuple[ItemCategory, List[Item]]], Dict[str, Tuple[Decimal, Decimal]]]:
|
||||||
items = event.items.all().select_related(
|
items = event.items.all().select_related(
|
||||||
'category', # for re-grouping
|
'category', # for re-grouping
|
||||||
@@ -125,6 +125,11 @@ def order_overview(
|
|||||||
qs = qs.filter(subevent__in=subevent)
|
qs = qs.filter(subevent__in=subevent)
|
||||||
elif subevent:
|
elif subevent:
|
||||||
qs = qs.filter(subevent=subevent)
|
qs = qs.filter(subevent=subevent)
|
||||||
|
if subevent_date_from:
|
||||||
|
qs = qs.filter(subevent__date_from__gte=subevent_date_from)
|
||||||
|
if subevent_date_until:
|
||||||
|
qs = qs.filter(subevent__date_from__lt=subevent_date_until)
|
||||||
|
|
||||||
if admission_only:
|
if admission_only:
|
||||||
qs = qs.filter(item__admission=True)
|
qs = qs.filter(item__admission=True)
|
||||||
items = items.filter(admission=True)
|
items = items.filter(admission=True)
|
||||||
@@ -232,7 +237,7 @@ def order_overview(
|
|||||||
payment_cat_obj.name = _('Fees')
|
payment_cat_obj.name = _('Fees')
|
||||||
payment_items = []
|
payment_items = []
|
||||||
|
|
||||||
if subevent is None and fees:
|
if subevent is None and not subevent_date_from and not subevent_date_until and fees:
|
||||||
qs = OrderFee.all if base_fees_qs is None else base_fees_qs
|
qs = OrderFee.all if base_fees_qs is None else base_fees_qs
|
||||||
qs = qs.filter(
|
qs = qs.filter(
|
||||||
order__event=event
|
order__event=event
|
||||||
|
|||||||
@@ -296,6 +296,17 @@ class OverviewReport(Report):
|
|||||||
subevent = self.form_data.get('subevent')
|
subevent = self.form_data.get('subevent')
|
||||||
story.append(Paragraph(pgettext('subevent', 'Date: {}').format(subevent), self.get_style()))
|
story.append(Paragraph(pgettext('subevent', 'Date: {}').format(subevent), self.get_style()))
|
||||||
story.append(Spacer(1, 5 * mm))
|
story.append(Spacer(1, 5 * mm))
|
||||||
|
|
||||||
|
if form_data.get('subevent_date_range'):
|
||||||
|
d_start, d_end = resolve_timeframe_to_dates_inclusive(now(), form_data['subevent_date_range'], self.timezone)
|
||||||
|
story += [
|
||||||
|
Paragraph(_('{axis} between {start} and {end}').format(
|
||||||
|
axis=_('Event date'),
|
||||||
|
start=date_format(d_start, 'SHORT_DATE_FORMAT') if d_start else '–',
|
||||||
|
end=date_format(d_end, 'SHORT_DATE_FORMAT') if d_end else '–',
|
||||||
|
), self.get_style()),
|
||||||
|
Spacer(1, 5 * mm)
|
||||||
|
]
|
||||||
return story
|
return story
|
||||||
|
|
||||||
def _get_data(self, form_data):
|
def _get_data(self, form_data):
|
||||||
@@ -303,12 +314,18 @@ class OverviewReport(Report):
|
|||||||
d_start, d_end = resolve_timeframe_to_dates_inclusive(now(), form_data['date_range'], self.timezone)
|
d_start, d_end = resolve_timeframe_to_dates_inclusive(now(), form_data['date_range'], self.timezone)
|
||||||
else:
|
else:
|
||||||
d_start, d_end = None, None
|
d_start, d_end = None, None
|
||||||
|
if form_data.get('subevent_date_range'):
|
||||||
|
sd_start, sd_end = resolve_timeframe_to_dates_inclusive(now(), form_data['subevent_date_range'], self.timezone)
|
||||||
|
else:
|
||||||
|
sd_start, sd_end = None, None
|
||||||
return order_overview(
|
return order_overview(
|
||||||
self.event,
|
self.event,
|
||||||
subevent=form_data.get('subevent'),
|
subevent=form_data.get('subevent'),
|
||||||
date_filter=form_data.get('date_axis'),
|
date_filter=form_data.get('date_axis'),
|
||||||
date_from=d_start,
|
date_from=d_start,
|
||||||
date_until=d_end,
|
date_until=d_end,
|
||||||
|
subevent_date_from=sd_start,
|
||||||
|
subevent_date_until=sd_end,
|
||||||
fees=True
|
fees=True
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -427,9 +444,18 @@ class OverviewReport(Report):
|
|||||||
@property
|
@property
|
||||||
def export_form_fields(self) -> dict:
|
def export_form_fields(self) -> dict:
|
||||||
f = OverviewFilterForm(event=self.event)
|
f = OverviewFilterForm(event=self.event)
|
||||||
|
f.fields = OrderedDict(f.fields.items())
|
||||||
del f.fields['ordering']
|
del f.fields['ordering']
|
||||||
del f.fields['date_from']
|
del f.fields['date_from']
|
||||||
del f.fields['date_until']
|
del f.fields['date_until']
|
||||||
|
if self.event.has_subevents:
|
||||||
|
f.fields['subevent_date_range'] = DateFrameField(
|
||||||
|
label=_('Event date'),
|
||||||
|
include_future_frames=True,
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
f.fields.move_to_end("subevent_date_range", last=False)
|
||||||
|
f.fields.move_to_end("subevent", last=False)
|
||||||
f.fields['date_range'] = DateFrameField(
|
f.fields['date_range'] = DateFrameField(
|
||||||
label=_('Date range'),
|
label=_('Date range'),
|
||||||
include_future_frames=False,
|
include_future_frames=False,
|
||||||
|
|||||||
Reference in New Issue
Block a user