Skip to content
Snippets Groups Projects
views.py 1.47 KiB
Newer Older
  • Learn to ignore specific revisions
  • from rest_framework import mixins
    from rest_framework import response
    from rest_framework import viewsets
    from rest_framework.decorators import list_route
    
    from funkwhale_api.music import models as music_models
    from funkwhale_api.users.permissions import HasUserPermission
    
    from . import filters
    from . import serializers
    
    
    class ManageTrackFileViewSet(
            mixins.ListModelMixin,
            mixins.RetrieveModelMixin,
            mixins.DestroyModelMixin,
            viewsets.GenericViewSet):
        queryset = (
            music_models.TrackFile.objects.all()
                .select_related(
                    'track__artist',
                    'track__album__artist',
                    'library_track')
                .order_by('-id')
        )
        serializer_class = serializers.ManageTrackFileSerializer
        filter_class = filters.ManageTrackFileFilterSet
        permission_classes = (HasUserPermission,)
        required_permissions = ['library']
        ordering_fields = [
            'accessed_date',
            'modification_date',
            'creation_date',
            'track__artist__name',
            'bitrate',
            'size',
            'duration',
        ]
    
        @list_route(methods=['post'])
        def action(self, request, *args, **kwargs):
            queryset = self.get_queryset()
            serializer = serializers.ManageTrackFileActionSerializer(
                request.data,
                queryset=queryset,
            )
            serializer.is_valid(raise_exception=True)
            result = serializer.save()
            return response.Response(result, status=200)