From 014e922d98dd0d2b6f333771f1148e58f1815c39 Mon Sep 17 00:00:00 2001 From: AngryUbuntuNerd Date: Tue, 29 Jul 2025 15:56:09 +0100 Subject: [PATCH 1/2] replace % with mod() SQL function to avoid invalid double-percentage signs --- django_celery_beat/schedulers.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/django_celery_beat/schedulers.py b/django_celery_beat/schedulers.py index 99d98f8c..37e246a1 100644 --- a/django_celery_beat/schedulers.py +++ b/django_celery_beat/schedulers.py @@ -16,7 +16,7 @@ from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.db import close_old_connections, transaction -from django.db.models import Case, F, IntegerField, Q, When +from django.db.models import Case, ExpressionWrapper, F, Func, IntegerField, Q, When from django.db.models.functions import Cast from django.db.utils import DatabaseError, InterfaceError from kombu.utils.encoding import safe_repr, safe_str @@ -331,11 +331,16 @@ def _get_crontab_exclude_query(self): *[ When( timezone=timezone_name, - then=( - F('hour_int') - + self._get_timezone_offset(timezone_name) - + 24 - ) % 24 + then=ExpressionWrapper( + Func( + F('hour_int') + + self._get_timezone_offset(timezone_name) + + 24, + 24, + function='MOD' + ), + output_field=IntegerField(), + ), ) for timezone_name in self._get_unique_timezone_names() ], From 19e59c38c38112ce00e44e5c5aa57f331a30676b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 29 Jul 2025 15:06:04 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- django_celery_beat/schedulers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django_celery_beat/schedulers.py b/django_celery_beat/schedulers.py index 37e246a1..cabfc6f8 100644 --- a/django_celery_beat/schedulers.py +++ b/django_celery_beat/schedulers.py @@ -16,7 +16,8 @@ from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.db import close_old_connections, transaction -from django.db.models import Case, ExpressionWrapper, F, Func, IntegerField, Q, When +from django.db.models import (Case, ExpressionWrapper, F, Func, IntegerField, + Q, When) from django.db.models.functions import Cast from django.db.utils import DatabaseError, InterfaceError from kombu.utils.encoding import safe_repr, safe_str