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

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

View File

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

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