Fuck playlists

This commit is contained in:
Fergal Moran
2015-12-01 00:42:51 +00:00
parent 79d3d894ea
commit 8d581d78da
6 changed files with 437 additions and 156 deletions

View File

@@ -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

View File

@@ -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):

View File

@@ -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)

View 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)

View File

@@ -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