Files
2026-03-13 01:07:02 -03:00

111 lines
4.7 KiB
Python

"""
Django ORM Models - GENERATED FILE
Do not edit directly. Regenerate using modelgen.
"""
import uuid
from django.db import models
class AssetStatus(models.TextChoices):
PENDING = "pending", "Pending"
READY = "ready", "Ready"
ERROR = "error", "Error"
class JobStatus(models.TextChoices):
PENDING = "pending", "Pending"
PROCESSING = "processing", "Processing"
COMPLETED = "completed", "Completed"
FAILED = "failed", "Failed"
CANCELLED = "cancelled", "Cancelled"
class MediaAsset(models.Model):
"""A video/audio file registered in the system."""
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=AssetStatus.choices, default=AssetStatus.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."""
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=JobStatus.choices, default=JobStatus.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)
execution_arn = 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)