views.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # coding=utf-8
  2. import json
  3. from django.db import transaction
  4. from utils.custom_modelviewset import CustomModelViewSet
  5. from utils import response_ok, response_error
  6. from utils.exceptions import CustomError
  7. from utils.permission import IsEmployee
  8. from apps.config.models import Config
  9. from apps.config.serializers import ConfigSerializer
  10. from apps.config.filters import ConfigFilter
  11. from apps.log.models import BizLog
  12. class ConfigViewSet(CustomModelViewSet):
  13. permission_classes = [IsEmployee, ]
  14. queryset = Config.objects.filter()
  15. serializer_class = ConfigSerializer
  16. def list(self, request, *args, **kwargs):
  17. queryset = self.filter_queryset(self.get_queryset())
  18. serializer = self.get_serializer(queryset, many=True)
  19. return response_ok(serializer.data)
  20. def create(self, request, *args,**kwargs):
  21. data = json.loads(request.POST.get('data'))
  22. keys = [
  23. 'point_rule',
  24. 'first_lv1', 'first_lv2', 'first_lv3', 'first_lv4', 'first_lv5',
  25. 'again_lv1', 'again_lv2', 'again_lv3', 'again_lv4', 'again_lv5',
  26. ]
  27. with transaction.atomic():
  28. for item in data:
  29. config = Config.objects.filter(property=item['key']).first()
  30. if item['value']:
  31. if item['key'] not in keys:
  32. raise CustomError(u'综合设置属性[%s]不存在' % item['key'])
  33. else:
  34. item['value'] = item['value'].strip()
  35. if config:
  36. config.value = item['value']
  37. config.save()
  38. else:
  39. Config.objects.create(property=item['key'], value=item['value'])
  40. BizLog.objects.addnew(self.request.user, BizLog.INSERT, u'修改系统配置',data)
  41. return response_ok()