views.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # coding=utf-8
  2. from utils.custom_modelviewset import CustomModelViewSet
  3. from rest_framework.decorators import action
  4. import json
  5. from .models import OperationHelp
  6. from utils.permission import IsAdministratorUser
  7. from .serializer import OperationHelpSerializer
  8. from apps.log.models import BizLog
  9. from .filters import OperationHelpFilter
  10. from django.db import transaction
  11. from utils.exceptions import CustomError
  12. from utils import response_ok, response_error
  13. class OperationHelpViewSet(CustomModelViewSet):
  14. permission_classes = [IsAdministratorUser, ]
  15. queryset = OperationHelp.objects.filter()
  16. serializer_class = OperationHelpSerializer
  17. def filter_queryset(self, queryset):
  18. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  19. f = OperationHelpFilter(self.request.GET, queryset=queryset)
  20. return f.qs
  21. def create(self, request, *args, **kwargs):
  22. data = json.loads(request.POST.get('data'))
  23. banner_img = request.FILES.get('banner_img')
  24. try:
  25. data['create_user'] = request.user
  26. tenant = request.user.employee.tenant
  27. data['tenant'] = tenant
  28. operation = OperationHelp.objects.create(**data)
  29. operation._add_img(banner_img, request.user)
  30. BizLog.objects.addnew(tenant, request.user, BizLog.INSERT, u'添加运维帮助信息', data)
  31. return response_ok()
  32. except CustomError as e:
  33. return response_error(e.get_error_msg())
  34. except Exception as e:
  35. return response_error(str(e))
  36. @action(methods=['post'], detail=True)
  37. def update_poster(self, request, pk):
  38. data = json.loads(request.POST.get('data'))
  39. banner_img = request.FILES.get('banner_img')
  40. try:
  41. if data['enable']:
  42. OperationHelp.objects.filter(id=pk).update(**data)
  43. poster = self.get_object()
  44. if banner_img:
  45. poster.del_images()
  46. poster._add_img(banner_img, request.user)
  47. except CustomError as e:
  48. return response_error(e.get_error_msg())
  49. except Exception as e:
  50. return response_error(str(e))
  51. return response_ok()