forked from CGM_Public/pretix_original
Export schedule: Fix computation of start time on same day
This commit is contained in:
@@ -94,7 +94,12 @@ class AbstractScheduledExport(LoggedModel):
|
||||
def compute_next_run(self):
|
||||
tz = self.tz
|
||||
r = rrulestr(self.schedule_rrule)
|
||||
new_d = r.after(now().astimezone(tz).replace(tzinfo=None), inc=False)
|
||||
|
||||
base_dt = now().astimezone(tz).replace(tzinfo=None)
|
||||
if now().astimezone(tz).time() < self.schedule_rrule_time:
|
||||
base_dt -= timedelta(days=1)
|
||||
|
||||
new_d = r.after(base_dt, inc=False)
|
||||
if not new_d:
|
||||
self.schedule_next_run = None
|
||||
return
|
||||
|
||||
@@ -2484,8 +2484,9 @@ class RunScheduledExportView(EventPermissionRequiredMixin, ExportMixin, View):
|
||||
messages.success(self.request, _('Your export is queued to start soon. The results will be send via email. '
|
||||
'Depending on system load and type and size of export, this may take a few '
|
||||
'minutes.'))
|
||||
return redirect(reverse('control:organizer.export', kwargs={
|
||||
'organizer': self.request.organizer.slug
|
||||
return redirect(reverse('control:event.orders.export', kwargs={
|
||||
'event': self.request.event.slug,
|
||||
'organizer': self.request.event.organizer.slug
|
||||
}))
|
||||
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ def event():
|
||||
date_from=datetime(2023, 1, 19, 2, 30, 0, tzinfo=pytz.UTC),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
o.settings.timezone = "Europe/Berlin"
|
||||
with scope(organizer=o):
|
||||
yield event
|
||||
|
||||
@@ -191,7 +192,7 @@ def test_event_ok(event, user, team):
|
||||
@pytest.mark.django_db
|
||||
@freeze_time("2023-01-18 03:00:00+01:00")
|
||||
def test_organizer_run_sets_new_time(event, user):
|
||||
s = ScheduledOrganizerExport(organizer=event.organizer, owner=user)
|
||||
s = ScheduledOrganizerExport(organizer=event.organizer, owner=user, timezone="Europe/Berlin")
|
||||
s.schedule_rrule = "DTSTART:20230118T000000\nRRULE:FREQ=DAILY;INTERVAL=1;WKST=MO"
|
||||
s.schedule_rrule_time = time(2, 30, 0)
|
||||
s.schedule_next_run = now() - timedelta(minutes=5)
|
||||
|
||||
@@ -2791,6 +2791,14 @@ class ScheduledExportTestCase(TestCase):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 19, 6, 30, 0))
|
||||
|
||||
with freeze_time("2023-01-19 06:28:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 19, 6, 30, 0))
|
||||
|
||||
with freeze_time("2023-01-19 06:30:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run == self.event.timezone.localize(datetime.datetime(2023, 1, 24, 6, 30, 0))
|
||||
|
||||
with freeze_time("2024-01-18 15:08:00+01:00"):
|
||||
s.compute_next_run()
|
||||
assert s.schedule_next_run is None
|
||||
|
||||
Reference in New Issue
Block a user