views.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # coding=utf-8
  2. from utils.custom_modelviewset import CustomModelViewSet
  3. from rest_framework.decorators import action
  4. from rest_framework import generics
  5. from django.conf import settings
  6. from .models import OperationHelp,OperationHelpUpfile
  7. from utils.permission import isLogin
  8. from .serializer import OperationHelpSerializer
  9. from apps.tenant import tenant_log
  10. from apps.log.models import BizLog
  11. from utils.exceptions import CustomError
  12. from .filters import OperationHelpFilter
  13. from utils import response_ok, response_error
  14. from django.db import transaction
  15. class OperationHelpViewSet(CustomModelViewSet):
  16. permission_classes = [isLogin, ]
  17. queryset = OperationHelp.objects.filter()
  18. serializer_class = OperationHelpSerializer
  19. def filter_queryset(self, queryset):
  20. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  21. f = OperationHelpFilter(self.request.GET, queryset=queryset)
  22. return f.qs
  23. def retrieve(self, request, *args, **kwargs):
  24. instance = self.get_object()
  25. serializer = self.get_serializer(instance)
  26. return response_ok(serializer.data)
  27. def perform_create(self, serializer):
  28. super(OperationHelpViewSet,self).perform_create(serializer)
  29. instance = serializer.instance
  30. validated_data = serializer.validated_data
  31. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加运维帮助[%s],id=%d' % (instance.title, instance.id),
  32. validated_data)
  33. def perform_update(self, serializer):
  34. super(OperationHelpViewSet,self).perform_update(serializer)
  35. instance = serializer.instance
  36. validated_data = serializer.validated_data
  37. tenant_log(self.request.user.employee, BizLog.INSERT, u'修改运维帮助[%s],id=%d' % (instance.title, instance.id),
  38. validated_data)
  39. @action(methods=['post'], detail=False)
  40. def upload_image(self, request):
  41. file = self.request.FILES.get('file')
  42. user = self.request.user
  43. operation_help_img = OperationHelpUpfile.objects.create(tenant=user.employee.tenant)
  44. operation_help_img._add_img(file, user.id)
  45. image = operation_help_img.file_path
  46. if image:
  47. data={
  48. "src": '%s%s' % (settings.SERVER_DOMAIN, image)
  49. }
  50. return response_ok(data)
  51. return response_error('上传失败,请重新上传!')
  52. @action(methods=['post'], detail=False)
  53. def upload_radio(self, request):
  54. file = self.request.FILES.get('file')
  55. user = self.request.user
  56. operation_help_radio = OperationHelpUpfile.objects.create(tenant=user.employee.tenant)
  57. operation_help_radio._add_radio(file, user.id)
  58. radio_path = operation_help_radio.file_path
  59. if radio_path:
  60. data = {
  61. "src": '%s%s' % (settings.SERVER_DOMAIN, radio_path)
  62. }
  63. return response_ok(data)
  64. return response_error('上传失败,请重新上传!')
  65. def destroy(self, request, *args, **kwargs):
  66. with transaction.atomic():
  67. instance = self.get_object()
  68. if instance.tenant != request.user.employee.tenant:
  69. raise CustomError(u'禁止跨企业操作!')
  70. operation_help_files = OperationHelpUpfile.objects.filter(operation_help=instance)
  71. for operation_help_file in operation_help_files:
  72. operation_help_file.del_file()
  73. super(OperationHelpViewSet, self).destroy(self, request, *args, **kwargs)
  74. tenant_log(self.request.user.employee, BizLog.DELETE, u'删除运维帮助[%s],id=%d' % (instance.title, instance.id))
  75. return response_ok()