From affb30e9f467bbeabf2924471f4bd3a8de86795f Mon Sep 17 00:00:00 2001 From: Joel Falknau Date: Mon, 20 Jan 2025 18:37:22 +1000 Subject: [PATCH 1/2] add migration --- .../crontab/migrations/0001_initial.py | 29 +++++++++++++++++++ allianceauth/crontab/migrations/__init__.py | 0 2 files changed, 29 insertions(+) create mode 100644 allianceauth/crontab/migrations/0001_initial.py create mode 100644 allianceauth/crontab/migrations/__init__.py diff --git a/allianceauth/crontab/migrations/0001_initial.py b/allianceauth/crontab/migrations/0001_initial.py new file mode 100644 index 00000000..35b76928 --- /dev/null +++ b/allianceauth/crontab/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.16 on 2025-01-20 06:16 + +import allianceauth.crontab.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='CronOffset', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('minute', models.FloatField(default=allianceauth.crontab.models.random_default, verbose_name='Minute Offset')), + ('hour', models.FloatField(default=allianceauth.crontab.models.random_default, verbose_name='Hour Offset')), + ('day_of_month', models.FloatField(default=allianceauth.crontab.models.random_default, verbose_name='Day of Month Offset')), + ('month_of_year', models.FloatField(default=allianceauth.crontab.models.random_default, verbose_name='Month of Year Offset')), + ('day_of_week', models.FloatField(default=allianceauth.crontab.models.random_default, verbose_name='Day of Week Offset')), + ], + options={ + 'verbose_name': 'Cron Offsets', + }, + ), + ] diff --git a/allianceauth/crontab/migrations/__init__.py b/allianceauth/crontab/migrations/__init__.py new file mode 100644 index 00000000..e69de29b From a57d55504d7775cb8832aaf2a2b0f3fea723a55f Mon Sep 17 00:00:00 2001 From: Joel Falknau Date: Mon, 20 Jan 2025 18:45:37 +1000 Subject: [PATCH 2/2] Cosmetic fix to * cron --- allianceauth/crontab/utils.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/allianceauth/crontab/utils.py b/allianceauth/crontab/utils.py index 150664ca..1af52256 100644 --- a/allianceauth/crontab/utils.py +++ b/allianceauth/crontab/utils.py @@ -19,8 +19,17 @@ def offset_cron(schedule: crontab) -> crontab: try: cron_offset = CronOffset.get_solo() - new_minute = [(m + (round(60 * cron_offset.minute))) % 60 for m in schedule.minute] - new_hour = [(m + (round(24 * cron_offset.hour))) % 24 for m in schedule.hour] + + # Stops this shit from happening 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 + # It is only cosmetic, but still annoying + if schedule._orig_minute == '*': + new_minute = '*' + else: + new_minute = [(m + (round(60 * cron_offset.minute))) % 60 for m in schedule.minute] + if schedule._orig_hour == '*': + new_hour = '*' + else: + new_hour = [(m + (round(24 * cron_offset.hour))) % 24 for m in schedule.hour] return crontab( minute=",".join(str(m) for m in sorted(new_minute)),