1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # coding=utf-8
- import json
- from django.db import transaction
- from utils.permission import IsTenantUser, permission_required
- from .serializers import ConfigSerializer
- from utils.custom_modelviewset import CustomModelViewSet
- from .models import Config
- from .filters import ConfigFilter
- from utils.exceptions import CustomError
- from apps.tenant import tenant_log
- from apps.log.models import BizLog
- from utils import response_ok, response_error
- class ConfigViewSet(CustomModelViewSet):
- permission_classes = [IsTenantUser, ]
- queryset = Config.objects.filter()
- serializer_class = ConfigSerializer
- @permission_required('config.browse_config')
- def filter_queryset(self, queryset):
- queryset = queryset.filter(tenant=self.request.user.employee.tenant)
- f = ConfigFilter(self.request.GET, queryset=queryset)
- return f.qs
- @permission_required('config.set_config')
- def create(self, request):
- data = json.loads(request.POST.get('data'))
- wxapp_home_img = request.FILES.get('wxapp_home_img')
- keys = ['repairs_person', 'send_order_type']
- with transaction.atomic():
- for item in data:
- config = Config.objects.filter(property=item['key'], tenant=self.request.user.employee.tenant).first()
- if item['key'] not in keys:
- raise CustomError(u'系统设置属性[%s]不存在' % item['key'])
- if config:
- config.value = item['value']
- config.save()
- else:
- Config.objects.create(tenant=self.request.user.employee.tenant, property=item['key'],
- value=item['value'])
- if wxapp_home_img:
- old_config = Config.objects.filter(property='wxapp_home_img', tenant=self.request.user.employee.tenant).first()
- if old_config:
- old_config.del_images(old_config)
- picture = Config.add_img(request.user.employee, 'wxapp_home_img', wxapp_home_img)
- Config.objects.create(tenant=self.request.user.employee.tenant, property='wxapp_home_img',
- value=picture)
- tenant_log(self.request.user.employee, BizLog.INSERT, u'修改系统设置', data)
- return response_ok()
|