mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-26 11:17:59 +00:00
Fuck playlists
This commit is contained in:
@@ -4,7 +4,7 @@ from core.utils.html import strip_tags
|
|||||||
|
|
||||||
from dss import settings
|
from dss import settings
|
||||||
from spa import models
|
from spa import models
|
||||||
from spa.models import Activity, Message
|
from spa.models import Activity, Message, Playlist
|
||||||
from spa.models.activity import ActivityDownload, ActivityPlay
|
from spa.models.activity import ActivityDownload, ActivityPlay
|
||||||
from spa.models.blog import Blog
|
from spa.models.blog import Blog
|
||||||
from spa.models.genre import Genre
|
from spa.models.genre import Genre
|
||||||
@@ -340,10 +340,10 @@ class UserProfileSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
def get_top_tags(self, obj):
|
def get_top_tags(self, obj):
|
||||||
return list(
|
return list(
|
||||||
Genre.objects.filter(mix__user__slug='fergalmoran').
|
Genre.objects.filter(mix__user__slug='fergalmoran').
|
||||||
annotate(total=Count('mix')).
|
annotate(total=Count('mix')).
|
||||||
order_by('-total').
|
order_by('-total').
|
||||||
values('total', 'description', 'slug')[0:3])
|
values('total', 'description', 'slug')[0:3])
|
||||||
|
|
||||||
def get_profile_image_small(self, obj):
|
def get_profile_image_small(self, obj):
|
||||||
return obj.get_sized_avatar_image(64, 64)
|
return obj.get_sized_avatar_image(64, 64)
|
||||||
@@ -519,3 +519,8 @@ class BlogSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Blog
|
model = Blog
|
||||||
|
|
||||||
|
|
||||||
|
class PlaylistSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Playlist
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ router.register(r'genre', views.GenreViewSet, base_name='genre')
|
|||||||
router.register(r'messages', views.MessageViewSet, base_name='messages')
|
router.register(r'messages', views.MessageViewSet, base_name='messages')
|
||||||
router.register(r'shows', views.ShowViewSet, base_name='shows')
|
router.register(r'shows', views.ShowViewSet, base_name='shows')
|
||||||
router.register(r'blog', views.BlogViewSet, base_name='shows')
|
router.register(r'blog', views.BlogViewSet, base_name='shows')
|
||||||
|
router.register(r'playlist', views.PlaylistViewSet, base_name='playlists')
|
||||||
|
|
||||||
|
|
||||||
class DebugView(APIView):
|
class DebugView(APIView):
|
||||||
|
|||||||
24
api/views.py
24
api/views.py
@@ -17,7 +17,7 @@ from rest_framework.status import HTTP_202_ACCEPTED, HTTP_401_UNAUTHORIZED, HTTP
|
|||||||
from api import serializers
|
from api import serializers
|
||||||
from dss import settings
|
from dss import settings
|
||||||
from spa import tasks
|
from spa import tasks
|
||||||
from spa.models import Message
|
from spa.models import Message, Playlist
|
||||||
from spa.models.blog import Blog
|
from spa.models.blog import Blog
|
||||||
from spa.models.genre import Genre
|
from spa.models.genre import Genre
|
||||||
from spa.models.activity import ActivityPlay
|
from spa.models.activity import ActivityPlay
|
||||||
@@ -56,8 +56,8 @@ class CommentViewSet(viewsets.ModelViewSet):
|
|||||||
mix = Mix.objects.get(pk=self.request.data['mix_id'])
|
mix = Mix.objects.get(pk=self.request.data['mix_id'])
|
||||||
if mix is not None:
|
if mix is not None:
|
||||||
serializer.save(
|
serializer.save(
|
||||||
mix=mix,
|
mix=mix,
|
||||||
user=self.request.user if self.request.user.is_authenticated() else None
|
user=self.request.user if self.request.user.is_authenticated() else None
|
||||||
)
|
)
|
||||||
except Mix.DoesNotExist:
|
except Mix.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
@@ -169,9 +169,9 @@ class SearchResultsView(views.APIView):
|
|||||||
'url': user.get_absolute_url(),
|
'url': user.get_absolute_url(),
|
||||||
'description': user.description
|
'description': user.description
|
||||||
} for user in UserProfile.objects.filter(
|
} for user in UserProfile.objects.filter(
|
||||||
Q(user__first_name__icontains=q) |
|
Q(user__first_name__icontains=q) |
|
||||||
Q(user__last_name__icontains=q) |
|
Q(user__last_name__icontains=q) |
|
||||||
Q(display_name__icontains=q)).exclude(slug__isnull=True).exclude(slug__exact='')[0:10]
|
Q(display_name__icontains=q)).exclude(slug__isnull=True).exclude(slug__exact='')[0:10]
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
r_s = [
|
r_s = [
|
||||||
@@ -367,3 +367,15 @@ class BlogViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
serializer.save(user=self.request.user.userprofile)
|
serializer.save(user=self.request.user.userprofile)
|
||||||
|
|
||||||
|
|
||||||
|
class PlaylistViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = Playlist.objects.all()
|
||||||
|
serializer_class = serializers.PlaylistSerializer
|
||||||
|
permission_classes = (IsAuthenticated,)
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
return self.queryset.get(user=self.request.user.userprofile)
|
||||||
|
|
||||||
|
return Response(status=HTTP_401_UNAUTHORIZED)
|
||||||
|
|||||||
16
spa/management/commands/mix_mp3_tags.py
Normal file
16
spa/management/commands/mix_mp3_tags.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from django.core.management.base import NoArgsCommand
|
||||||
|
|
||||||
|
from core.utils.audio.mp3 import mp3_length
|
||||||
|
from spa.models import Mix
|
||||||
|
|
||||||
|
|
||||||
|
class Command(NoArgsCommand):
|
||||||
|
def handle_noargs(self, **options):
|
||||||
|
try:
|
||||||
|
mix = Mix.objects.get(duration=None)
|
||||||
|
if mix is not None:
|
||||||
|
mix.waveform_generated = True
|
||||||
|
mix.duration = mp3_length(path)
|
||||||
|
mix.save(update_fields=["waveform_generated", "duration"])
|
||||||
|
except Exception as ex:
|
||||||
|
print("Debug exception: %s" % ex)
|
||||||
@@ -19,6 +19,11 @@ from dss import settings
|
|||||||
logger = logging.getLogger('dss')
|
logger = logging.getLogger('dss')
|
||||||
|
|
||||||
|
|
||||||
|
@task(time_limit=3600)
|
||||||
|
def send_db_signals(uid):
|
||||||
|
waveform_generated_signal.send(sender=None, uid=uid)
|
||||||
|
|
||||||
|
|
||||||
@task(time_limit=3600)
|
@task(time_limit=3600)
|
||||||
def create_waveform_task(in_file, uid):
|
def create_waveform_task(in_file, uid):
|
||||||
out_file = os.path.join(settings.CACHE_ROOT, 'waveforms/%s.png' % uid)
|
out_file = os.path.join(settings.CACHE_ROOT, 'waveforms/%s.png' % uid)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user