views.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # coding=utf-8
  2. import requests
  3. import json
  4. from django.db import transaction
  5. from rest_framework.decorators import action
  6. from django.utils import timezone
  7. from utils import response_ok
  8. from utils.permission import permission_required
  9. from utils.custom_modelviewset import CustomModelViewSet
  10. from utils.exceptions import CustomError
  11. from apps.foundation.models import BizLog, Config
  12. from apps.account import tenant_log
  13. from apps.images.models import Images
  14. from apps.customer.models import Customer, CustomerVehicle
  15. from apps.vehicle.models import Brand
  16. from apps.customer.filters import CustomerFilter, CustomerVehicleFilter
  17. from .serializers import CustomerSerializer, CustomerVehicleSerializer
  18. from hashlib import md5
  19. class CustomerViewSet(CustomModelViewSet):
  20. queryset = Customer.objects.filter()
  21. serializer_class = CustomerSerializer
  22. def filter_queryset(self, queryset):
  23. queryset = queryset.filter()
  24. f = CustomerFilter(self.request.GET, queryset=queryset)
  25. return f.qs
  26. def perform_create(self, serializer):
  27. super(CustomerViewSet, self).perform_create(serializer)
  28. instance = serializer.instance
  29. validated_data = serializer.validated_data
  30. tenant_log(self.request.user, BizLog.INSERT, u'添加客户[%s],id=%d' % (instance.name, instance.id),validated_data)
  31. @action(methods=['post'], detail=True)
  32. def update_customer(self, request, pk):
  33. file = request.FILES.get('image', None)
  34. user = request.user
  35. instance = self.get_object()
  36. with transaction.atomic():
  37. serializer = self.get_serializer(instance, data=request.data)
  38. serializer.is_valid(raise_exception=True)
  39. self.perform_update(serializer)
  40. tenant_log(user, BizLog.UPDATE, u'修改客户[%s],id=%d' % (instance.name, instance.id), request.data)
  41. if file:
  42. old_img = instance.face
  43. img = Images.objects.employee_addnew(user, Images.CUSTOMER_FACE, file)
  44. instance.face = img
  45. instance.save()
  46. if old_img:
  47. old_img.del_images()
  48. return response_ok()
  49. class CustomerVehicleViewSet(CustomModelViewSet):
  50. queryset = CustomerVehicle.objects.filter()
  51. serializer_class = CustomerVehicleSerializer
  52. def filter_queryset(self, queryset):
  53. queryset = queryset.filter()
  54. f = CustomerVehicleFilter(self.request.GET, queryset=queryset)
  55. return f.qs