ITRadio/server/proj/audio/models.py

68 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.db import models
from account.models import MyUser
from django.template.defaultfilters import slugify
from audio.services.service import AzuraCast
class Song(models.Model):
unique_id = models.CharField('ID трека для плеера', max_length=255, blank=True, null=True)
slug = models.SlugField('Слаг трека', blank=True, null=True)
azura_id = models.CharField('ID трека с Азуры', max_length=255)
title = models.CharField('Название трека', max_length=255)
artist = models.CharField('Исполнитель', max_length=255)
album = models.CharField('Альбом трека', blank=True, null=True, max_length=255)
genre = models.CharField('Жанр трека', blank=True, null=True, max_length=50)
art = models.CharField('Изображение трека', blank=True, null=True, max_length=255)
def save(self, *args, **kwargs):
if not self.id:
self.slug = slugify(self.azura_id)
super(Song, self).save(*args, **kwargs)
def __str__(self):
return f"{self.artist} - {self.title}"
class Meta:
verbose_name = 'Треки'
unique_together = ('azura_id', )
verbose_name_plural = 'Треки'
def delete(self):
azura = AzuraCast()
azura.delete_song(self.azura_id)
super(Song, self).delete()
class FavoriteSong(models.Model):
song = models.ForeignKey(Song, verbose_name='Трек', on_delete=models.CASCADE)
user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE)
def __str__(self):
return f"{self.song.title}"
class Meta:
verbose_name = 'Избранные Треки'
unique_together = ('song', 'user')
verbose_name_plural = 'Избранные Треки'
class PlayList(models.Model):
name = models.CharField('Название плейлиста', max_length=50, blank=True, null=True)
song = models.ManyToManyField(Song, blank=True, null=True)
user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE)
playlist_art = models.FileField('Изображение плейлиста', blank=True, null=True, upload_to="playlist_images/")
def __str__(self):
return f"{self.name}"
class Meta:
verbose_name = 'Плейлисты'
verbose_name_plural = 'Плейлисты'
class Podkast(models.Model):
name = models.CharField('Название подкаста', max_length=100)
podkast_file = models.FileField('Файл подкаста', upload_to="podkasts/")
podkast_art = models.FileField('Изображение подкаста', blank=True, null=True, upload_to="podkast_images/")
def __str__(self):
return f"{self.name}"
class Meta:
verbose_name = 'Подкасты'
verbose_name_plural = 'Подкасты'