69 lines
3.0 KiB
Python
69 lines
3.0 KiB
Python
from django.db import models
|
||
from account.models import MyUser
|
||
from django.template.defaultfilters import slugify
|
||
from audio.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, null=True, blank=True)
|
||
user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE, blank=True, null=True)
|
||
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 = 'Плейлисты'
|
||
unique_together = ('name', 'user')
|
||
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 = 'Подкасты' |