This commit is contained in:
shijing 2022-04-21 09:35:20 +08:00
commit 7d2d960a92
4 changed files with 41 additions and 3 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.0.5 on 2022-04-20 08:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vod', '0004_auto_20210908_1449'),
]
operations = [
migrations.AddField(
model_name='video',
name='sort_str',
field=models.CharField(blank=True, max_length=10, null=True, verbose_name='排序字符'),
),
]

View File

@ -14,6 +14,7 @@ class Video(CommonAModel):
duration = models.IntegerField(verbose_name='时长(秒)', default=0) duration = models.IntegerField(verbose_name='时长(秒)', default=0)
views = models.IntegerField(verbose_name='观看次数', default=0) views = models.IntegerField(verbose_name='观看次数', default=0)
viewsp = models.IntegerField(verbose_name='观看人数', default=0) viewsp = models.IntegerField(verbose_name='观看人数', default=0)
sort_str = models.CharField('排序字符', max_length=10, null=True, blank=True)
class Meta: class Meta:
verbose_name = '点播视频' verbose_name = '点播视频'

View File

@ -8,6 +8,11 @@ class VideoSerializer(serializers.ModelSerializer):
model = Video model = Video
fields = '__all__' fields = '__all__'
class VideoUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Video
fields = ['name', 'category', 'description', 'sort_str']
class VideoListDetailSerializer(serializers.ModelSerializer): class VideoListDetailSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Video model = Video

View File

@ -1,7 +1,8 @@
from datetime import timedelta from datetime import timedelta
from time import timezone from time import timezone
from apps.system.models import Dict
from rest_framework.mixins import ListModelMixin from rest_framework.mixins import ListModelMixin
from apps.vod.serializers import VRecordSerializer, VRecordUpdateSerializer, VideoListDetailSerializer, VideoSerializer from apps.vod.serializers import VRecordSerializer, VRecordUpdateSerializer, VideoListDetailSerializer, VideoSerializer, VideoUpdateSerializer
from apps.vod.models import Video, ViewRecord from apps.vod.models import Video, ViewRecord
from django.shortcuts import render from django.shortcuts import render
from .vodclient import getAllClass, getPlayCode, searchMedia, getSignature from .vodclient import getAllClass, getPlayCode, searchMedia, getSignature
@ -15,6 +16,7 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.status import HTTP_400_BAD_REQUEST from rest_framework.status import HTTP_400_BAD_REQUEST
from django.utils import timezone from django.utils import timezone
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from utils.queryset import get_child_queryset2
# Create your views here. # Create your views here.
class ClassView(APIView): class ClassView(APIView):
@ -44,14 +46,26 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
perms_map={'get':'video_view', 'post':'video_create', 'put':'video_update', 'delete':'video_delete'} perms_map={'get':'video_view', 'post':'video_create', 'put':'video_update', 'delete':'video_delete'}
queryset = Video.objects.all() queryset = Video.objects.all()
search_fields = ['name', 'category__name', 'description'] search_fields = ['name', 'category__name', 'description']
filterset_fields = ['category'] # filterset_fields = ['category']
serializer_class = VideoSerializer serializer_class = VideoSerializer
ordering = ['-views', '-create_time'] ordering_fields = ['create_time', 'sort_str', 'views', 'viewsp']
ordering = ['sort_str', '-create_time']
def get_serializer_class(self): def get_serializer_class(self):
if self.action in ['list', 'retrieve']: if self.action in ['list', 'retrieve']:
return VideoListDetailSerializer return VideoListDetailSerializer
elif self.action in ['update']:
return VideoUpdateSerializer
return super().get_serializer_class() return super().get_serializer_class()
def get_queryset(self):
queryset = super().get_queryset()
category = self.request.query_params.get('category', None)
if category:
categorys = get_child_queryset2(Dict.objects.get(pk=category))
queryset = queryset.filter(category__in=categorys)
return queryset
@action(methods=['get'], detail=False, perms_map={'get':'video_view'}) @action(methods=['get'], detail=False, perms_map={'get':'video_view'})
def myview(self, request, *args, **kwargs): def myview(self, request, *args, **kwargs):
""" """