|
@@ -6,7 +6,9 @@
|
|
|
@Email : zhangdongming@asj6.wecom.work
|
|
|
@Software: PyCharm
|
|
|
"""
|
|
|
+import json
|
|
|
import logging
|
|
|
+import threading
|
|
|
import time
|
|
|
|
|
|
import boto3
|
|
@@ -18,6 +20,7 @@ from django.views import View
|
|
|
|
|
|
from Model.models import DeviceSharePermission, DeviceChannelUserSet, DeviceChannelUserPermission, UidChannelSetModel, \
|
|
|
Device_Info
|
|
|
+from Object.ContentSecurityObject import ContentSecurity
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.UserDeviceService import UserDeviceService
|
|
@@ -360,6 +363,38 @@ class UserDeviceShareView(View):
|
|
|
device_info_qs = Device_Info.objects.filter(UID=uid).values('id', 'Type')
|
|
|
device_type = device_info_qs[0]['Type'] if device_info_qs.exists() else ''
|
|
|
|
|
|
+ # 初始化存储桶客户端
|
|
|
+ if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
|
|
|
+ s3 = boto3.client(
|
|
|
+ 's3',
|
|
|
+ aws_access_key_id=AWS_ACCESS_KEY_ID[0],
|
|
|
+ aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
|
|
|
+ config=botocore.client.Config(signature_version='s3v4'),
|
|
|
+ region_name='cn-northwest-1'
|
|
|
+ )
|
|
|
+ else:
|
|
|
+ s3 = boto3.client(
|
|
|
+ 's3',
|
|
|
+ aws_access_key_id=AWS_ACCESS_KEY_ID[1],
|
|
|
+ aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
|
|
|
+ config=botocore.client.Config(signature_version='s3v4'),
|
|
|
+ region_name='us-east-1'
|
|
|
+ )
|
|
|
+
|
|
|
+ obj_key = f"app/static/device-wallpaper/{uid}/{file_name}"
|
|
|
+ params = {'Bucket': "ansjerfilemanager", 'Key': obj_key}
|
|
|
+ image_url = s3.generate_presigned_url('get_object', Params=params)
|
|
|
+ service = 'profilePhotoCheck'
|
|
|
+ LOGGER.info('壁纸链接:{}'.format(image_url))
|
|
|
+ service_dict = {'imageUrl': image_url}
|
|
|
+ service_parameters = json.dumps(service_dict)
|
|
|
+ legal = ContentSecurity().image_review(service, service_parameters)
|
|
|
+ if not legal:
|
|
|
+ # 异步删除
|
|
|
+ thread = threading.Thread(target=cls.delete_wallpaper, args=(obj_key,))
|
|
|
+ thread.start()
|
|
|
+ return response.json(184)
|
|
|
+
|
|
|
DeviceWallpaper.objects.create(
|
|
|
device_type=device_type,
|
|
|
storage_type=1,
|
|
@@ -469,3 +504,21 @@ class UserDeviceShareView(View):
|
|
|
except Exception as e:
|
|
|
LOGGER.error('用户选取壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return response.json(5)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def delete_wallpaper(file_key):
|
|
|
+ try:
|
|
|
+ if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
|
|
|
+ s3 = AmazonS3Util(
|
|
|
+ AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], 'cn-northwest-1'
|
|
|
+ )
|
|
|
+ else:
|
|
|
+ s3 = AmazonS3Util(
|
|
|
+ AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], 'us-east-1'
|
|
|
+ )
|
|
|
+
|
|
|
+ s3.delete_obj("ansjerfilemanager", file_key)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('删除违规壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return False
|