# -*- coding:utf-8 -*- # !/usr/bin/env python # Time 18-3-19 # Author Yo # Email YoLoveLife@outlook.com from .. import models, serializers from django.conf import settings from django.db.models import Q from rest_framework import generics from rest_framework.permissions import IsAuthenticated,AllowAny from rest_framework.pagination import PageNumberPagination from rest_framework.views import Response, status from django.conf import settings from utils.permission import file as FilePermission import datetime from timeline.decorator import decorator_api from deveops.api import WebTokenAuthentication __all__ = [ 'FilePagination', 'UtilsFileCreateAPI', 'UtilsFileListAPI', 'UtilsFileListByPageAPI', 'UtilsFileDeleteAPI', ] class FilePagination(PageNumberPagination): page_size = 10 class UtilsFileListAPI(WebTokenAuthentication, generics.ListAPIView): module = models.FILE serializer_class = serializers.FileSerializer permission_classes = [FilePermission.FileListRequiredMixin, IsAuthenticated] def get_queryset(self): user = self.request.user end_time = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d') start_time = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') query_set = models.FILE.objects.filter(user=user, pushmission__isnull=True, create_time__range=(start_time, end_time)) return query_set class UtilsFileListByPageAPI(WebTokenAuthentication, generics.ListAPIView): module = models.FILE serializer_class = serializers.FileSerializer permission_classes = [FilePermission.FileListRequiredMixin, IsAuthenticated] pagination_class = FilePagination queryset = models.FILE.objects.all().order_by('-create_time') class UtilsFileCreateAPI(WebTokenAuthentication, generics.CreateAPIView): module = models.FILE serializer_class = serializers.FileSerializer permission_classes = [FilePermission.FileCreateRequiredMixin, IsAuthenticated] msg = settings.LANGUAGE.UtilsFileCreateAPI # @decorator_api(timeline_type=settingsFILE_UTILS_FILE_CREATE) def create(self, request, *args, **kwargs): response = super(UtilsFileCreateAPI, self).create(request, *args, **kwargs) # return self.msg.format( # USER = request.user.full_name, # ), response return response class UtilsFileUpdateAPI(WebTokenAuthentication, generics.UpdateAPIView): module = models.FILE serializer_class = serializers.FileSerializer permission_classes = [FilePermission.FileUpdateRequiredMixin, IsAuthenticated] lookup_field = 'uuid' lookup_url_kwarg = 'pk' msg = settings.LANGUAGE.UtilsFileUpdateAPI def get_queryset(self): user = self.request.user query_set = models.FILE.objects.filter(user=user,) return query_set @decorator_api(timeline_type=settings.TIMELINE_KEY_VALUE['FILE_UTILS_FILE_UPDATE']) def update(self, request, *args, **kwargs): response = super(UtilsFileUpdateAPI, self).update(request, *args, **kwargs) obj = self.get_object() return self.msg.format( USER=request.user.full_name, UUID=obj.uuid, FILENAME=obj.name, ), response class UtilsFileDeleteAPI(WebTokenAuthentication, generics.DestroyAPIView): module = models.FILE serializer_class = serializers.FileSerializer queryset = models.FILE.objects.all() permission_classes = [FilePermission.FileDeleteRequiredMixin, IsAuthenticated] lookup_field = 'uuid' lookup_url_kwarg = 'pk' msg = settings.LANGUAGE.UtilsFileDeleteAPI @decorator_api(timeline_type=settings.TIMELINE_KEY_VALUE['FILE_UTILS_FILE_DELETE']) def delete(self, request, *args, **kwargs): obj = self.get_object() if not obj.pushmission.exists(): response = super(UtilsFileDeleteAPI, self).delete(request, *args, **kwargs) return self.msg.format( USER=request.user.full_name, UUID=obj.uuid, FILENAME=obj.name, ), response else: return '', Response({'detail': '该文件已经属于某个任务无法被删除'}, status=status.HTTP_406_NOT_ACCEPTABLE)