sintonia/api/libretime_api/schedule/models/smart_block.py

120 lines
3.5 KiB
Python

from django.db import models
class SmartBlock(models.Model):
created_at = models.DateTimeField(blank=True, null=True, db_column="utime")
updated_at = models.DateTimeField(blank=True, null=True, db_column="mtime")
name = models.CharField(max_length=255)
description = models.CharField(max_length=512, blank=True, null=True)
length = models.DurationField(blank=True, null=True)
class Kind(models.TextChoices):
STATIC = "static", "Static"
DYNAMIC = "dynamic", "Dynamic"
kind = models.CharField(
choices=Kind.choices,
default=Kind.DYNAMIC,
max_length=7,
blank=True,
null=True,
db_column="type",
)
owner = models.ForeignKey(
"core.User",
on_delete=models.DO_NOTHING,
blank=True,
null=True,
db_column="creator_id",
)
def get_owner(self):
return self.owner
class Meta:
managed = False
db_table = "cc_block"
permissions = [
(
"change_own_smartblock",
"Change the smartblocks where they are the owner",
),
(
"delete_own_smartblock",
"Delete the smartblocks where they are the owner",
),
]
class SmartBlockContent(models.Model):
block = models.ForeignKey(
"schedule.SmartBlock",
on_delete=models.DO_NOTHING,
blank=True,
null=True,
)
file = models.ForeignKey(
"storage.File",
on_delete=models.DO_NOTHING,
blank=True,
null=True,
)
position = models.IntegerField(blank=True, null=True)
offset = models.FloatField(db_column="trackoffset")
length = models.DurationField(blank=True, null=True, db_column="cliplength")
cue_in = models.DurationField(blank=True, null=True, db_column="cuein")
cue_out = models.DurationField(blank=True, null=True, db_column="cueout")
fade_in = models.TimeField(blank=True, null=True, db_column="fadein")
fade_out = models.TimeField(blank=True, null=True, db_column="fadeout")
def get_owner(self):
return self.block.get_owner()
class Meta:
managed = False
db_table = "cc_blockcontents"
permissions = [
(
"change_own_smartblockcontent",
"Change the content of smartblocks where they are the owner",
),
(
"delete_own_smartblockcontent",
"Delete the content of smartblocks where they are the owner",
),
]
class SmartBlockCriteria(models.Model):
block = models.ForeignKey("schedule.SmartBlock", on_delete=models.DO_NOTHING)
group = models.IntegerField(
blank=True,
null=True,
db_column="criteriagroup",
)
criteria = models.CharField(max_length=32)
condition = models.CharField(max_length=16, db_column="modifier")
value = models.CharField(max_length=512)
extra = models.CharField(max_length=512, blank=True, null=True)
def get_owner(self):
return self.block.get_owner()
class Meta:
managed = False
db_table = "cc_blockcriteria"
permissions = [
(
"change_own_smartblockcriteria",
"Change the criteria of smartblocks where they are the owner",
),
(
"delete_own_smartblockcriteria",
"Delete the criteria of smartblocks where they are the owner",
),
]