Browse Source

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

locky 3 years ago
parent
commit
488ca8f012
1 changed files with 24 additions and 2 deletions
  1. 24 2
      AdminController/LogManagementController.py

+ 24 - 2
AdminController/LogManagementController.py

@@ -1,13 +1,14 @@
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
-
-
+import boto3
+import botocore
 import requests
 from django.views.generic.base import View
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 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):
@@ -257,6 +258,27 @@ class LogManagementView(View):
                 device_log_qs = DeviceLogModel.objects.filter().order_by(
                     '-add_time').values()[(page - 1) * line:page * line]
             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})
         except Exception as e:
             print(e)