69 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.7 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)
 | |
| 
 | |
| 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}) |