From 067a546ab66ae8610f895adc7293689cc24a12a7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 27 May 2021 10:22:14 +0200 Subject: [PATCH] Fix cronjob failure on MySQL --- src/pretix/base/services/invoices.py | 4 ++-- src/tests/base/test_runperiodic.py | 29 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/tests/base/test_runperiodic.py diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index f9c8cd5d6d..a82e060e75 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -43,7 +43,7 @@ import vat_moss.exchange_rates from django.conf import settings from django.core.files.base import ContentFile from django.core.serializers.json import DjangoJSONEncoder -from django.db import transaction +from django.db import connection, transaction from django.db.models import Count from django.dispatch import receiver from django.utils import timezone @@ -459,7 +459,7 @@ def send_invoices_to_organizer(sender, **kwargs): with transaction.atomic(): qs = Invoice.objects.filter( sent_to_organizer__isnull=True - ).prefetch_related('event').select_for_update(skip_locked=True) + ).prefetch_related('event').select_for_update(skip_locked=connection.features.has_select_for_update_skip_locked) for i in qs[:batch_size]: if i.event.settings.invoice_email_organizer: with language(i.event.settings.locale): diff --git a/src/tests/base/test_runperiodic.py b/src/tests/base/test_runperiodic.py new file mode 100644 index 0000000000..40097e67f6 --- /dev/null +++ b/src/tests/base/test_runperiodic.py @@ -0,0 +1,29 @@ +# +# This file is part of pretix (Community Edition). +# +# Copyright (C) 2014-2020 Raphael Michel and contributors +# Copyright (C) 2020-2021 rami.io GmbH and contributors +# +# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General +# Public License as published by the Free Software Foundation in version 3 of the License. +# +# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are +# applicable granting you additional permissions and placing additional restrictions on your usage of this software. +# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive +# this file, see . +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. +# +# You should have received a copy of the GNU Affero General Public License along with this program. If not, see +# . +# +import pytest + +from pretix.base.signals import periodic_task + + +@pytest.mark.django_db +def test_all_periodic_tasks(): + periodic_task.send(sender=None) # to trigger sendmail_run_rules