soundwave/backend/download/models.py

41 lines
1.3 KiB
Python
Raw Normal View History

"""Download queue models"""
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class DownloadQueue(models.Model):
"""Download queue model"""
STATUS_CHOICES = [
('pending', 'Pending'),
('downloading', 'Downloading'),
('completed', 'Completed'),
('failed', 'Failed'),
('ignored', 'Ignored'),
]
owner = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='download_queue',
help_text="User who owns this download"
)
url = models.URLField(max_length=500)
youtube_id = models.CharField(max_length=50, blank=True)
title = models.CharField(max_length=500, blank=True)
channel_name = models.CharField(max_length=200, blank=True)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
error_message = models.TextField(blank=True)
added_date = models.DateTimeField(auto_now_add=True)
started_date = models.DateTimeField(null=True, blank=True)
completed_date = models.DateTimeField(null=True, blank=True)
auto_start = models.BooleanField(default=False)
class Meta:
ordering = ['-auto_start', 'added_date']
def __str__(self):
return f"{self.title or self.url} - {self.status}"