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)
views = 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:
verbose_name = '点播视频'

View File

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

View File

@ -1,7 +1,8 @@
from datetime import timedelta
from time import timezone
from apps.system.models import Dict
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 django.shortcuts import render
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 django.utils import timezone
from rest_framework.exceptions import ParseError
from utils.queryset import get_child_queryset2
# Create your views here.
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'}
queryset = Video.objects.all()
search_fields = ['name', 'category__name', 'description']
filterset_fields = ['category']
# filterset_fields = ['category']
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):
if self.action in ['list', 'retrieve']:
return VideoListDetailSerializer
elif self.action in ['update']:
return VideoUpdateSerializer
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'})
def myview(self, request, *args, **kwargs):
"""