111 lines
4.7 KiB
Python
111 lines
4.7 KiB
Python
"""
|
|
Django ORM Models - GENERATED FILE
|
|
|
|
Do not edit directly. Modify schema/models/*.py and run:
|
|
python schema/generate.py --django
|
|
"""
|
|
|
|
import uuid
|
|
from django.db import models
|
|
|
|
class MediaAsset(models.Model):
|
|
"""A video/audio file registered in the system."""
|
|
|
|
class Status(models.TextChoices):
|
|
PENDING = "pending", "Pending"
|
|
READY = "ready", "Ready"
|
|
ERROR = "error", "Error"
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
filename = models.CharField(max_length=500)
|
|
file_path = models.CharField(max_length=1000)
|
|
status = models.CharField(max_length=20, choices=Status.choices, default=Status.PENDING)
|
|
error_message = models.TextField(blank=True, default='')
|
|
file_size = models.BigIntegerField(null=True, blank=True)
|
|
duration = models.FloatField(null=True, blank=True, default=None)
|
|
video_codec = models.CharField(max_length=255, null=True, blank=True)
|
|
audio_codec = models.CharField(max_length=255, null=True, blank=True)
|
|
width = models.IntegerField(null=True, blank=True, default=None)
|
|
height = models.IntegerField(null=True, blank=True, default=None)
|
|
framerate = models.FloatField(null=True, blank=True, default=None)
|
|
bitrate = models.BigIntegerField(null=True, blank=True)
|
|
properties = models.JSONField(default=dict, blank=True)
|
|
comments = models.TextField(blank=True, default='')
|
|
tags = models.JSONField(default=list, blank=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
ordering = ["-created_at"]
|
|
|
|
def __str__(self):
|
|
return self.filename
|
|
|
|
|
|
class TranscodePreset(models.Model):
|
|
"""A reusable transcoding configuration (like Handbrake presets)."""
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
name = models.CharField(max_length=255)
|
|
description = models.TextField(blank=True, default='')
|
|
is_builtin = models.BooleanField(default=False)
|
|
container = models.CharField(max_length=255)
|
|
video_codec = models.CharField(max_length=255)
|
|
video_bitrate = models.CharField(max_length=255, null=True, blank=True)
|
|
video_crf = models.IntegerField(null=True, blank=True, default=None)
|
|
video_preset = models.CharField(max_length=255, null=True, blank=True)
|
|
resolution = models.CharField(max_length=255, null=True, blank=True)
|
|
framerate = models.FloatField(null=True, blank=True, default=None)
|
|
audio_codec = models.CharField(max_length=255)
|
|
audio_bitrate = models.CharField(max_length=255, null=True, blank=True)
|
|
audio_channels = models.IntegerField(null=True, blank=True, default=None)
|
|
audio_samplerate = models.IntegerField(null=True, blank=True, default=None)
|
|
extra_args = models.JSONField(default=list, blank=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
ordering = ["-created_at"]
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class TranscodeJob(models.Model):
|
|
"""A transcoding or trimming job in the queue."""
|
|
|
|
class Status(models.TextChoices):
|
|
PENDING = "pending", "Pending"
|
|
PROCESSING = "processing", "Processing"
|
|
COMPLETED = "completed", "Completed"
|
|
FAILED = "failed", "Failed"
|
|
CANCELLED = "cancelled", "Cancelled"
|
|
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
|
source_asset_id = models.UUIDField()
|
|
preset_id = models.UUIDField(null=True, blank=True)
|
|
preset_snapshot = models.JSONField(default=dict, blank=True)
|
|
trim_start = models.FloatField(null=True, blank=True, default=None)
|
|
trim_end = models.FloatField(null=True, blank=True, default=None)
|
|
output_filename = models.CharField(max_length=500)
|
|
output_path = models.CharField(max_length=1000, null=True, blank=True)
|
|
output_asset_id = models.UUIDField(null=True, blank=True)
|
|
status = models.CharField(max_length=20, choices=Status.choices, default=Status.PENDING)
|
|
progress = models.FloatField(default=0.0)
|
|
current_frame = models.IntegerField(null=True, blank=True, default=None)
|
|
current_time = models.FloatField(null=True, blank=True, default=None)
|
|
speed = models.CharField(max_length=255, null=True, blank=True)
|
|
error_message = models.TextField(blank=True, default='')
|
|
celery_task_id = models.CharField(max_length=255, null=True, blank=True)
|
|
priority = models.IntegerField(default=0)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
started_at = models.DateTimeField(null=True, blank=True)
|
|
completed_at = models.DateTimeField(null=True, blank=True)
|
|
|
|
class Meta:
|
|
ordering = ["-created_at"]
|
|
|
|
def __str__(self):
|
|
return str(self.id)
|
|
|