hujingpei 4 жил өмнө
parent
commit
b12f11cac3

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

@@ -1,6 +1,9 @@
 from django.db import models
 from django.conf import settings
+from PIL import Image
+
 from apps.tenant.models import Tenant
+from utils.file_operation import UploadFile, DeleteFile
 
 class OperationHelp(models.Model):
 
@@ -11,8 +14,40 @@ class OperationHelp(models.Model):
     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)
+    image = models.CharField(verbose_name=u'图片路径', max_length=250,blank=True)
+    width = models.IntegerField(verbose_name=u"图片宽度",blank=True, default=0)
+    height = models.IntegerField(verbose_name=u"图片高度",blank=True, default=0)
 
     class Meta:
         db_table = 'operation_help'
         ordering = ['-id', 'tenant']
         verbose_name = u'运维帮助'
+
+    def _add_img(self, file, user_id):
+        width = None
+        height = None
+
+        path = "operation_help/"
+        filename = UploadFile(file, path, user_id)
+        fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
+
+        try:
+            img = Image.open(fullname)
+            width, height = img.size
+            # 缩略图压缩宽或高最大200
+            if width > 1440:
+                img = img.resize((1440, int((height / width) * 1440)), Image.ANTIALIAS)
+                img.save(fullname)
+                width, height = img.size
+        except:
+            pass
+
+        self.image = "%s%s" % (settings.MEDIA_URL, filename)
+        self.width = width
+        self.height = height
+        self.save()
+
+    def del_images(self):
+        image = self.image
+        # self.delete()
+        DeleteFile(image)

+ 11 - 20
apps/tenant/operation_help/views.py

@@ -26,18 +26,14 @@ class OperationHelpViewSet(CustomModelViewSet):
 
     def create(self, request, *args, **kwargs):
         data = json.loads(request.POST.get('data'))
-        # banner_img = request.FILES.get('banner_img')
+        banner_img = request.FILES.get('banner_img')
         try:
-            with transaction.atomic():
-                data['create_user'] = request.user
-                tenant = request.user.employee.tenant
-                posters = OperationHelp.objects.filter(tenant=tenant, enable=True).count()
-                if posters >= 2:
-                    raise CustomError(u'只能添加2个在用的轮播!')
-                data['tenant'] = tenant
-                # poster = OperationHelp.objects.create(**data)
-                # poster._add_img(banner_img,request.user)
-                BizLog.objects.addnew(tenant, request.user, BizLog.INSERT, u'添加轮播信息', data)
+            data['create_user'] = request.user
+            tenant = request.user.employee.tenant
+            data['tenant'] = tenant
+            operation = OperationHelp.objects.create(**data)
+            operation._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())
@@ -47,19 +43,14 @@ class OperationHelpViewSet(CustomModelViewSet):
     @action(methods=['post'], detail=True)
     def update_poster(self, request, pk):
         data = json.loads(request.POST.get('data'))
-        # banner_img = request.FILES.get('banner_img')
+        banner_img = request.FILES.get('banner_img')
         try:
             if data['enable']:
-                tenant = request.user.employee.tenant
-                posters = OperationHelp.objects.filter(tenant=tenant, enable=True).exclude(id=pk).count()
-                if posters >= 2:
-                    raise CustomError(u'只能添加2个在用的轮播!')
-            with transaction.atomic():
                 OperationHelp.objects.filter(id=pk).update(**data)
                 poster = self.get_object()
-                # if banner_img:
-                #     poster.del_images()
-                #     poster._add_img(banner_img,request.user)
+                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: