feat(main): main

This commit is contained in:
2026-03-20 15:00:24 -04:00
parent af3076342a
commit c9718c5483
30 changed files with 2513 additions and 559 deletions

View File

@@ -231,6 +231,7 @@ class Channel(models.Model):
scheduling_mode = models.CharField(max_length=24, choices=SchedulingMode.choices, default=SchedulingMode.TEMPLATE_DRIVEN)
is_active = models.BooleanField(default=True)
requires_auth = models.BooleanField(default=False, help_text="If True, only signed-in users can stream or fetch schedules for this channel.")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
@@ -514,3 +515,27 @@ class MediaResumePoint(models.Model):
constraints = [
models.UniqueConstraint(fields=['user', 'media_item'], name='unique_media_resume_point')
]
class BackupSchedule(models.Model):
class Frequency(models.TextChoices):
HOURLY = 'hourly', 'Hourly'
DAILY = 'daily', 'Daily'
WEEKLY = 'weekly', 'Weekly'
MONTHLY = 'monthly', 'Monthly'
enabled = models.BooleanField(default=False)
frequency = models.CharField(max_length=16, choices=Frequency.choices, default=Frequency.DAILY)
minute = models.PositiveSmallIntegerField(default=0)
hour = models.PositiveSmallIntegerField(default=2)
day_of_week = models.PositiveSmallIntegerField(default=0) # 0=Mon
day_of_month = models.PositiveSmallIntegerField(default=1)
retention_count = models.PositiveIntegerField(default=14)
last_run_at = models.DateTimeField(blank=True, null=True)
updated_at = models.DateTimeField(auto_now=True)
@classmethod
def get_solo(cls):
obj, _ = cls.objects.get_or_create(id=1)
return obj