| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import os
- 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 time
- import logging
- 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
- logger = logging.getLogger("myapp")
- class NewUploadAPIView(APIView):
- # 上传apk文件
- def post(self, request):
- server_web = config.get("server_web")
- 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 = 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, 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'{proxy_front}/{file_name}'
- return Response({"url": url, "old_url": download_url, "code": 0, "msg": "success"})
- except Exception as e:
- logger.error(e)
- return Response({"code": 2, "msg": "APK保存失败,请检查或重试"})
- class APKUploadView(APIView):
- # 保存app信息
- def post(self, request):
- 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:
- logger.error(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})
|