73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
from django.shortcuts import render
|
|
from rest_framework.viewsets import ModelViewSet
|
|
from rest_framework.views import APIView
|
|
from vod.models import Course, Video
|
|
from rest_framework.response import Response
|
|
from vod.serializers import CourseSerializer, VideoSerializer
|
|
from vod.vodclient import getSignature
|
|
from utils.custom import CommonPagination
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
from rest_framework.filters import OrderingFilter, SearchFilter
|
|
from django.db.models import Q
|
|
# Create your views here.
|
|
|
|
class CourseViewSet(ModelViewSet):
|
|
queryset = Course.objects.all()
|
|
serializer_class = CourseSerializer
|
|
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
|
ordering = ['id']
|
|
perms_map = [
|
|
{'get': '*'}, {'post': 'vod'},
|
|
{'put': 'vod'}, {'delete': 'vod'}]
|
|
def get_queryset(self):
|
|
queryset = self.queryset
|
|
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
|
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
|
if self.request.user.is_superuser:
|
|
return queryset
|
|
roles = self.request.user.roles.values_list('name', flat=True)
|
|
if '普通管理' in roles:
|
|
queryset = queryset.filter(Q(create_admin = self.request.user)|Q(create_admin=self.request.user))
|
|
else:
|
|
return queryset.none()
|
|
return queryset
|
|
|
|
def perform_create(self, serializer):
|
|
serializer.save(create_admin=self.request.user)
|
|
|
|
def perform_update(self, serializer):
|
|
ret = serializer.validated_data
|
|
return super().perform_update(serializer)
|
|
|
|
class VideoViewSet(ModelViewSet):
|
|
queryset = Video.objects.all()
|
|
filterset_fields = ['course']
|
|
pagination_class = CommonPagination
|
|
serializer_class = VideoSerializer
|
|
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
|
ordering = ['-id']
|
|
perms_map = [
|
|
{'get': '*'}, {'post': 'vod'},
|
|
{'put': 'vod'}, {'delete': 'vod'}]
|
|
def get_queryset(self):
|
|
queryset = self.queryset
|
|
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
|
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
|
|
if self.request.user.is_superuser:
|
|
return queryset
|
|
roles = self.request.user.roles.values_list('name', flat=True)
|
|
if '普通管理' in roles:
|
|
queryset = queryset.filter(course__create_admin = self.request.user)
|
|
else:
|
|
return queryset.none()
|
|
return queryset
|
|
|
|
|
|
class SignatureAPIView(APIView):
|
|
perms_map = [{'get': 'vod'}]
|
|
def get(self, request, format=None):
|
|
"""
|
|
获取上传签名
|
|
"""
|
|
signature = getSignature(procedure=request.query_params.get('procedure', None))
|
|
return Response({'signature':signature}) |