diff --git a/server/proj/audio/models.py b/server/proj/audio/models.py index 558a567..c8965cd 100644 --- a/server/proj/audio/models.py +++ b/server/proj/audio/models.py @@ -1,5 +1,6 @@ from django.db import models from account.models import MyUser +from django.template.defaultfilters import slugify class Song(models.Model): azura_id = models.CharField('ID трека с Азуры', max_length=255) @@ -8,6 +9,12 @@ class Song(models.Model): 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) + slug = models.SlugField() + + 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}" @@ -16,4 +23,4 @@ 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.user.first_name} {self.user.last_name} - {self.song.title}" + return f"{self.user.email} - {self.song.title}" diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 5e470eb..dc8ad06 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -17,6 +17,23 @@ class SongViewSet(ViewSet): @action(detail=False, methods=['post'], schema=SongSchema()) def create_song(self, request): + + """ song = Song.objects.filter( + azura_id = request.data['azura_id'], + title = request.data['title'], + artist = request.data['artist'], + album = request.data['album'], + genre = request.data['genre'], + art = request.data['art'] + ) + + if song.exists(): + data = { + "song": serializer.data['id'], + "user": request.user.pk + } """ + + serializer = SongSerializer(data=request.data) if serializer.is_valid(): serializer.save() @@ -31,6 +48,7 @@ class SongViewSet(ViewSet): else: return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST) + @action(detail=False, methods=['post'], schema=DeleteSongSchema()) def delete_song(self, request): song_id = request.data['song_id']