|
|
@@ -3,47 +3,73 @@ from rest_framework.views import APIView
|
|
|
from rest_framework.response import Response
|
|
|
from rest_framework.parsers import FileUploadParser
|
|
|
from kedong.settings import MEDIA_ROOT
|
|
|
-import uuid
|
|
|
+import time
|
|
|
import uuid
|
|
|
from datetime import datetime
|
|
|
from django.conf import settings
|
|
|
from smartfarming.models.agriculture import APKLogs
|
|
|
+from smartfarming.serializers.apk_serializers import APKLogsSerializers
|
|
|
|
|
|
|
|
|
config = settings.CONFIG
|
|
|
|
|
|
class NewUploadAPIView(APIView):
|
|
|
+ # 上传apk文件
|
|
|
def post(self, request):
|
|
|
server_web = config.get("server_web")
|
|
|
- path = request.data.get("model", "others")
|
|
|
- local_path = os.path.join(MEDIA_ROOT, path)
|
|
|
+ local_path = os.path.join(MEDIA_ROOT, "app")
|
|
|
os.mkdir(local_path) if not os.path.exists(local_path) else None
|
|
|
file_obj = request.data['file']
|
|
|
if file_obj.size > 1024 * 1024 * 200:
|
|
|
return Response({"code": 2, "msg": "请上传小于200M文件"})
|
|
|
try:
|
|
|
+ proxy_front = f'{server_web}/media/app'
|
|
|
stamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
|
|
|
file_name = "kedong." + ((file_obj.name).split("."))[-1]
|
|
|
- file = f"{local_path}/{file_name}"
|
|
|
- old_url = os.path.join(local_path, f"{str(stamp)}-{file_name}")
|
|
|
+ file = os.path.join(local_path, file_name)
|
|
|
+ old_file_name = f"{str(stamp)}-{file_name}"
|
|
|
+ real_url = os.path.join(local_path, old_file_name)
|
|
|
if os.path.exists(file):
|
|
|
- os.rename(file, old_url)
|
|
|
+ os.rename(file, real_url)
|
|
|
+ download_url = f"{proxy_front}/{old_file_name}"
|
|
|
+ app = APKLogs.objects.all().order_by("-upltime")
|
|
|
+ if app:
|
|
|
+ app = app.first()
|
|
|
+ app.history_apk = download_url
|
|
|
+ app.save()
|
|
|
with open(file, 'wb') as f:
|
|
|
for chunk in file_obj.chunks():
|
|
|
f.write(chunk)
|
|
|
- url = f'{server_web}/media/{local_path}/{file_name}'
|
|
|
- old_url = f"{server_web}/media/{old_url}"
|
|
|
- return Response({"url": url, "old_url": old_url, "code": 0, "msg": "success"})
|
|
|
+ url = f'{proxy_front}/{file_name}'
|
|
|
+ return Response({"url": url, "old_url": download_url, "code": 0, "msg": "success"})
|
|
|
except Exception as e:
|
|
|
- return Response({"code": 2, "msg": "图片保存失败,请检查或重试"})
|
|
|
+ return Response({"code": 2, "msg": "APK保存失败,请检查或重试"})
|
|
|
|
|
|
|
|
|
class APKUploadView(APIView):
|
|
|
- # 上传图片
|
|
|
+ # 保存app信息
|
|
|
def post(self, request):
|
|
|
- server_web = config.get("server_web")
|
|
|
- local_path = os.path.join(MEDIA_ROOT, "apk")
|
|
|
- os.mkdir(local_path) if not os.path.exists(local_path) else None
|
|
|
- file_apk = request.data['apk']
|
|
|
- file_qrcode = request.data['qrcode']
|
|
|
+ try:
|
|
|
+ request_data = request.data
|
|
|
+ apk = request_data.get('apk')
|
|
|
+ history_qr_code = request_data.get('history_qr_code')
|
|
|
+ mark = request_data.get("mark")
|
|
|
+ app = APKLogs()
|
|
|
+ app.history_apk = apk if apk else ""
|
|
|
+ app.history_qr_code = history_qr_code if history_qr_code else ""
|
|
|
+ app.mark = mark if mark else ""
|
|
|
+ app.upltime = int(time.time())
|
|
|
+ app.save()
|
|
|
+ return Response({"code": 0, "msg": "success"})
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return Response({"code": 1, "msg": "保存失败"})
|
|
|
+
|
|
|
+
|
|
|
+class APPListAPIView(APIView):
|
|
|
+ # app信息列表
|
|
|
+ def post(self, request):
|
|
|
+ queryset = APKLogs.objects.all().order_by("-upltime")
|
|
|
+ serializers = APKLogsSerializers(queryset, many=True)
|
|
|
+ return Response({"code": 0, "msg": "success", "data": serializers.data})
|
|
|
|