1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # coding=utf-8
- from utils.custom_modelviewset import CustomModelViewSet
- from rest_framework.views import APIView
- from django.db.models import Q
- import traceback
- from rest_framework.decorators import action
- import json
- from apps.tenant.poster.models import Poster
- from utils.permission import IsTenantUser, IsAdministratorUser
- from apps.tenant.poster.serializer import PosterSerializer
- from apps.log.models import BizLog
- from apps.tenant import tenant_log
- from apps.tenant.poster.filters import PosterFilter
- from django.db import transaction
- from utils.exceptions import CustomError
- from utils import response_ok, response_error
- class PosterViewSet(CustomModelViewSet):
- permission_classes = [IsAdministratorUser, ]
- queryset = Poster.objects.filter()
- serializer_class = PosterSerializer
- def filter_queryset(self, queryset):
- queryset = queryset.filter()
- f = PosterFilter(self.request.GET, queryset=queryset)
- return f.qs
- def create(self, request, *args, **kwargs):
- data = json.loads(request.POST.get('data'))
- banner_img = request.FILES.get('banner_img')
- with transaction.atomic():
- data['create_user'] = request.user
- poster = Poster.objects.create(**data)
- poster._add_img(banner_img,request.user)
- BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'添加轮播信息', data)
- return response_ok()
- @action(methods=['post'], detail=True)
- def update_poster(self, request, pk):
- data = json.loads(request.POST.get('data'))
- # data = {'title': '644', 'content': '发斯蒂芬44', 'location': '1', 'enable': '1'}
- banner_img = request.FILES.get('banner_img')
- try:
- with transaction.atomic():
- Poster.objects.filter(id=pk).update(**data)
- poster = self.get_object()
- if banner_img:
- poster.del_images()
- poster._add_img(banner_img,request.user)
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
- return response_ok()
|