views.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # coding=utf-8
  2. import json
  3. from django.db import transaction
  4. from utils.permission import IsTenantUser, permission_required
  5. from .serializers import ConfigSerializer
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from .models import Config
  8. from .filters import ConfigFilter
  9. from utils.exceptions import CustomError
  10. from apps.tenant import tenant_log
  11. from apps.log.models import BizLog
  12. from utils import response_ok, response_error
  13. class ConfigViewSet(CustomModelViewSet):
  14. permission_classes = [IsTenantUser, ]
  15. queryset = Config.objects.filter()
  16. serializer_class = ConfigSerializer
  17. @permission_required('config.browse_config')
  18. def filter_queryset(self, queryset):
  19. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  20. f = ConfigFilter(self.request.GET, queryset=queryset)
  21. return f.qs
  22. @permission_required('config.set_config')
  23. def create(self, request):
  24. data = json.loads(request.POST.get('data'))
  25. wxapp_home_img = request.FILES.get('wxapp_home_img')
  26. keys = ['repairs_person', 'send_order_type']
  27. with transaction.atomic():
  28. for item in data:
  29. config = Config.objects.filter(property=item['key'], tenant=self.request.user.employee.tenant).first()
  30. if item['key'] not in keys:
  31. raise CustomError(u'系统设置属性[%s]不存在' % item['key'])
  32. if config:
  33. config.value = item['value']
  34. config.save()
  35. else:
  36. Config.objects.create(tenant=self.request.user.employee.tenant, property=item['key'],
  37. value=item['value'])
  38. if wxapp_home_img:
  39. old_config = Config.objects.filter(property='wxapp_home_img', tenant=self.request.user.employee.tenant).first()
  40. if old_config:
  41. old_config.del_images(old_config)
  42. picture = Config.add_img(request.user.employee, 'wxapp_home_img', wxapp_home_img)
  43. Config.objects.create(tenant=self.request.user.employee.tenant, property='wxapp_home_img',
  44. value=picture)
  45. tenant_log(self.request.user.employee, BizLog.INSERT, u'修改系统设置', data)
  46. return response_ok()