ソースを参照

获取设备日志数据返回下载链接

locky 3 年 前
コミット
488ca8f012
1 ファイル変更24 行追加2 行削除
  1. 24 2
      AdminController/LogManagementController.py

+ 24 - 2
AdminController/LogManagementController.py

@@ -1,13 +1,14 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-
-
+import boto3
+import botocore
 import requests
 import requests
 from django.views.generic.base import View
 from django.views.generic.base import View
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel
+from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 
 
 
 
 class LogManagementView(View):
 class LogManagementView(View):
@@ -257,6 +258,27 @@ class LogManagementView(View):
                 device_log_qs = DeviceLogModel.objects.filter().order_by(
                 device_log_qs = DeviceLogModel.objects.filter().order_by(
                     '-add_time').values()[(page - 1) * line:page * line]
                     '-add_time').values()[(page - 1) * line:page * line]
             device_log_list = CommonService.qs_to_list(device_log_qs)
             device_log_list = CommonService.qs_to_list(device_log_qs)
+
+            # 添加下载链接
+            aws_s3_client = boto3.client(
+                's3',
+                region_name=REGION_NAME,
+                aws_access_key_id=ACCESS_KEY_ID,
+                aws_secret_access_key=SECRET_ACCESS_KEY,
+                config=botocore.client.Config(signature_version='s3v4'),
+            )
+            for device_log in device_log_list:
+                obj = device_log['serial_number'] if device_log['serial_number'] else device_log['uid']
+                obj = 'device_log/' + obj + '/{}'.format(device_log['filename'])
+                download_url = aws_s3_client.generate_presigned_url(
+                    ClientMethod='get_object',
+                    Params={
+                        'Bucket': LOG_BUCKET,
+                        'Key': obj
+                    },
+                    ExpiresIn=3600
+                )
+                device_log['download_url'] = download_url
             return response.json(0, {'list': device_log_list, 'total': total})
             return response.json(0, {'list': device_log_list, 'total': total})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)