f56b088643
Base Image Build / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
from django.db import migrations
|
|
import json
|
|
|
|
def create_default_refresh_tasks(apps, schema_editor):
|
|
"""
|
|
Creates a PeriodicTask for each existing M3UAccount that doesn't have one.
|
|
"""
|
|
IntervalSchedule = apps.get_model("django_celery_beat", "IntervalSchedule")
|
|
PeriodicTask = apps.get_model("django_celery_beat", "PeriodicTask")
|
|
M3UAccount = apps.get_model("m3u", "M3UAccount")
|
|
|
|
default_interval, _ = IntervalSchedule.objects.get_or_create(
|
|
every=24,
|
|
period="hours",
|
|
)
|
|
|
|
for account in M3UAccount.objects.all():
|
|
if account.refresh_task:
|
|
continue
|
|
|
|
task_name = f"m3u_account-refresh-{account.id}"
|
|
|
|
refresh_task = PeriodicTask.objects.create(
|
|
name=task_name,
|
|
interval=default_interval,
|
|
task="apps.m3u.tasks.refresh_single_m3u_account",
|
|
kwargs=json.dumps({"account_id": account.id}),
|
|
)
|
|
|
|
account.refresh_task = refresh_task
|
|
account.save(update_fields=["refresh_task"])
|
|
|
|
def reverse_migration(apps, schema_editor):
|
|
IntervalSchedule = apps.get_model("django_celery_beat", "IntervalSchedule")
|
|
PeriodicTask = apps.get_model("django_celery_beat", "PeriodicTask")
|
|
M3UAccount = apps.get_model("m3u", "M3UAccount")
|
|
|
|
for account in M3UAccount.objects.all():
|
|
IntervalSchedule.objects.filter(name=f"m3u_account-refresh-interval-{account.id}").delete()
|
|
PeriodicTask.objects.filter(name=f"m3u_account-refresh-{account.id}").delete()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
("m3u", "0005_m3uaccount_custom_properties_and_more"),
|
|
("django_celery_beat", "0019_alter_periodictasks_options"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(create_default_refresh_tasks, reverse_migration),
|
|
]
|