mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 09:18:13 +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 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.blog import Blog
|
||||
from spa.models.genre import Genre
|
||||
@@ -340,10 +340,10 @@ class UserProfileSerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_top_tags(self, obj):
|
||||
return list(
|
||||
Genre.objects.filter(mix__user__slug='fergalmoran').
|
||||
annotate(total=Count('mix')).
|
||||
order_by('-total').
|
||||
values('total', 'description', 'slug')[0:3])
|
||||
Genre.objects.filter(mix__user__slug='fergalmoran').
|
||||
annotate(total=Count('mix')).
|
||||
order_by('-total').
|
||||
values('total', 'description', 'slug')[0:3])
|
||||
|
||||
def get_profile_image_small(self, obj):
|
||||
return obj.get_sized_avatar_image(64, 64)
|
||||
@@ -519,3 +519,8 @@ class BlogSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
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'shows', views.ShowViewSet, base_name='shows')
|
||||
router.register(r'blog', views.BlogViewSet, base_name='shows')
|
||||
router.register(r'playlist', views.PlaylistViewSet, base_name='playlists')
|
||||
|
||||
|
||||
class DebugView(APIView):
|
||||
|
||||
26
api/views.py
26
api/views.py
@@ -17,7 +17,7 @@ from rest_framework.status import HTTP_202_ACCEPTED, HTTP_401_UNAUTHORIZED, HTTP
|
||||
from api import serializers
|
||||
from dss import settings
|
||||
from spa import tasks
|
||||
from spa.models import Message
|
||||
from spa.models import Message, Playlist
|
||||
from spa.models.blog import Blog
|
||||
from spa.models.genre import Genre
|
||||
from spa.models.activity import ActivityPlay
|
||||
@@ -56,8 +56,8 @@ class CommentViewSet(viewsets.ModelViewSet):
|
||||
mix = Mix.objects.get(pk=self.request.data['mix_id'])
|
||||
if mix is not None:
|
||||
serializer.save(
|
||||
mix=mix,
|
||||
user=self.request.user if self.request.user.is_authenticated() else None
|
||||
mix=mix,
|
||||
user=self.request.user if self.request.user.is_authenticated() else None
|
||||
)
|
||||
except Mix.DoesNotExist:
|
||||
pass
|
||||
@@ -107,7 +107,7 @@ class MixViewSet(viewsets.ModelViewSet):
|
||||
'id',
|
||||
'play_count'
|
||||
)
|
||||
|
||||
|
||||
@detail_route()
|
||||
def stream_url(self, request, **kwargs):
|
||||
mix = self.get_object()
|
||||
@@ -169,9 +169,9 @@ class SearchResultsView(views.APIView):
|
||||
'url': user.get_absolute_url(),
|
||||
'description': user.description
|
||||
} for user in UserProfile.objects.filter(
|
||||
Q(user__first_name__icontains=q) |
|
||||
Q(user__last_name__icontains=q) |
|
||||
Q(display_name__icontains=q)).exclude(slug__isnull=True).exclude(slug__exact='')[0:10]
|
||||
Q(user__first_name__icontains=q) |
|
||||
Q(user__last_name__icontains=q) |
|
||||
Q(display_name__icontains=q)).exclude(slug__isnull=True).exclude(slug__exact='')[0:10]
|
||||
]
|
||||
else:
|
||||
r_s = [
|
||||
@@ -367,3 +367,15 @@ class BlogViewSet(viewsets.ModelViewSet):
|
||||
|
||||
def perform_create(self, serializer):
|
||||
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')
|
||||
|
||||
|
||||
@task(time_limit=3600)
|
||||
def send_db_signals(uid):
|
||||
waveform_generated_signal.send(sender=None, uid=uid)
|
||||
|
||||
|
||||
@task(time_limit=3600)
|
||||
def create_waveform_task(in_file, 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