浏览代码

运维帮助

wushaodong 4 年之前
父节点
当前提交
75d6723fc2

+ 1 - 1
apps/tenant/device/serializers.py

@@ -6,7 +6,7 @@ from .models import *
 
 
 class DeviceSerializer(serializers.ModelSerializer):
-    create_user_text = serializers.CharField(source='create_user.username', read_only=True)
+    create_user_text = serializers.CharField(source='create_user.employee.name', read_only=True)
 
     class Meta:
         model = DeviceModel

+ 0 - 0
apps/tenant/operation_help/__init__.py


+ 11 - 0
apps/tenant/operation_help/filters.py

@@ -0,0 +1,11 @@
+# coding=utf-8
+
+import django_filters
+from .models import Poster
+
+class PosterFilter(django_filters.FilterSet):
+    title = django_filters.CharFilter(field_name='title', lookup_expr='icontains')
+
+    class Meta:
+        model = Poster
+        fields = '__all__'

+ 0 - 0
apps/tenant/operation_help/migrations/__init__.py


+ 18 - 0
apps/tenant/operation_help/models.py

@@ -0,0 +1,18 @@
+from django.db import models
+from django.conf import settings
+from apps.tenant.models import Tenant
+
+class OperationHelp(models.Model):
+
+    title = models.CharField(verbose_name=u'标题', max_length=100)
+    content = models.CharField(verbose_name=u'内容',max_length=500)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
+                                    editable=False)
+    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
+    enable = models.BooleanField(verbose_name=u"在用", default=True)
+    tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
+
+    class Meta:
+        db_table = 'operation_help'
+        ordering = ['-id', 'tenant']
+        verbose_name = u'运维帮助'

+ 18 - 0
apps/tenant/operation_help/serializer.py

@@ -0,0 +1,18 @@
+from rest_framework import serializers
+from .models import Poster
+from django.conf import settings
+
+class PosterSerializer(serializers.ModelSerializer):
+    location_text = serializers.CharField(source='get_location_display', read_only=True)
+    enable_text = serializers.SerializerMethodField()
+    create_user_name = serializers.CharField(source='create_user.employee.name', read_only=True)
+    tenant_name = serializers.CharField(source='tenant.company_name', read_only=True)
+
+    def get_enable_text(self,obj):
+        if obj.enable:
+            return '是'
+        return '否'
+
+    class Meta:
+        model = Poster
+        fields = '__all__'

+ 11 - 0
apps/tenant/operation_help/urls.py

@@ -0,0 +1,11 @@
+from rest_framework.routers import SimpleRouter
+from django.conf.urls import url
+from .views import PosterViewSet
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', PosterViewSet)
+urlpatterns += router.urls

+ 69 - 0
apps/tenant/operation_help/views.py

@@ -0,0 +1,69 @@
+# coding=utf-8
+
+from utils.custom_modelviewset import CustomModelViewSet
+from rest_framework.decorators import action
+import json
+import traceback
+from .models import Poster
+from utils.permission import IsAdministratorUser
+from .serializer import PosterSerializer
+from apps.log.models import BizLog
+from .filters import PosterFilter
+from django.db import transaction
+from utils.exceptions import CustomError
+from utils import response_ok, response_error
+
+
+class PosterViewSet(CustomModelViewSet):
+    permission_classes = [IsAdministratorUser, ]
+    queryset = Poster.objects.filter()
+    serializer_class = PosterSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter(tenant=self.request.user.employee.tenant)
+        f = PosterFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    def create(self, request, *args, **kwargs):
+        data = json.loads(request.POST.get('data'))
+        banner_img = request.FILES.get('banner_img')
+        try:
+            with transaction.atomic():
+                data['create_user'] = request.user
+                tenant = request.user.employee.tenant
+                posters = Poster.objects.filter(tenant=tenant, enable=True).count()
+                if posters >= 2:
+                    raise CustomError(u'只能添加2个在用的轮播!')
+                data['tenant'] = tenant
+                poster = Poster.objects.create(**data)
+                poster._add_img(banner_img,request.user)
+                BizLog.objects.addnew(tenant, request.user, BizLog.INSERT, u'添加轮播信息', data)
+            return response_ok()
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+
+    @action(methods=['post'], detail=True)
+    def update_poster(self, request, pk):
+        data = json.loads(request.POST.get('data'))
+        # data = {'title': '644', 'content': '发斯蒂芬44', 'location': '1', 'enable': '1'}
+        banner_img = request.FILES.get('banner_img')
+        try:
+            if data['enable']:
+                tenant = request.user.employee.tenant
+                posters = Poster.objects.filter(tenant=tenant, enable=True).exclude(id=pk).count()
+                if posters >= 2:
+                    raise CustomError(u'只能添加2个在用的轮播!')
+            with transaction.atomic():
+                Poster.objects.filter(id=pk).update(**data)
+                poster = self.get_object()
+                if banner_img:
+                    poster.del_images()
+                    poster._add_img(banner_img,request.user)
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok()
+