This commit is contained in:
2025-10-02 00:54:34 +02:00
commit 84b34c9615
200 changed files with 42048 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
# yourapp/management/commands/seed_celery_beat.py
import json
from django.utils import timezone
from django.core.management.base import BaseCommand
from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule
class Command(BaseCommand):
help = "Seeds the database with predefined Celery Beat tasks."
def handle(self, *args, **kwargs):
# # Example 1 — Run every 10 minutes
# schedule, _ = IntervalSchedule.objects.get_or_create(
# every=10,
# period=IntervalSchedule.MINUTES,
# )
# Example 2 — Run each 5 minutes
crontab_delete_unpayed, _ = CrontabSchedule.objects.get_or_create(
minute='*/5',
hour='*',
day_of_week='*',
day_of_month='*',
month_of_year='*',
timezone=timezone.get_current_timezone_name(),
)
PeriodicTask.objects.get_or_create(
name='Zrušení nezaplacených rezervací',
task='booking.tasks.cancel_unpayed_reservations_task',
crontab=crontab_delete_unpayed,
args=json.dumps([]), # Optional arguments
kwargs=json.dumps({"minutes": 30}),
description="Maže Rezervace podle Objednávky, pokud ta nebyla zaplacena v době 30 minut. Tím se uvolní Prodejní Místa pro nové rezervace.\nJako vstupní argument může být zadán počet minut, podle kterého nezaplacená rezervaace bude stornovana."
)
crontab_delete_soft, _ = CrontabSchedule.objects.get_or_create(
minute='0',
hour='1',
day_of_week='*',
day_of_month='1',
month_of_year='*',
timezone=timezone.get_current_timezone_name(),
)
PeriodicTask.objects.get_or_create(
name='Skartace soft-smazaných záznamů',
task='booking.tasks.hard_delete_soft_deleted_records_task',
crontab=crontab_delete_soft,
args=json.dumps([]), # Optional arguments
kwargs=json.dumps({"years": 10, "days": 0}), # Optional kwargs
description="Mazání všech záznamů označených jako smazané v databázi.\nJako vstupní argument lze zadat počet let nebo dnů, podle kterého se určí, jak staré záznamy budou trvale odstraněny."
)
self.stdout.write(self.style.SUCCESS("✅ Celery Beat tasks have been seeded."))