from django.contrib import auth from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from rest_framework.authtoken.models import Token from rest_framework.authentication import BasicAuthentication, TokenAuthentication from .serializers import UserRegisterSerializer from django.middleware.csrf import get_token from django.contrib.auth import login from api.utils import * from api.models import File, Mission, Plan, Result import requests import json, csv class RawDataTrans(APIView): authentication_classes = [] permission_classes = [] def get(self, request): if request.user: # 用户从前端发来请求 return success("测试返回图数据") else: # 进程管理器发来请求 # mission = Mission.objects.get(id=int(request.data.get('missionId'))) plan = Plan.objects.get(id=int(request.data.get('planId'))) return success("测试返回图数据") def post(self, request): mission = Mission.objects.get(id=int(request.data.get('missionId'))) plan = Plan.objects.get(id=int(request.data.get('planId'))) nodes = request.data.get('nodes') edges = request.data.get('edges') for param in [mission, plan, nodes, edges]: if not param: print("结果传递参数不足") return failed(message="缺少结果参数") try: result = plan.own_result print("PLAN结果数据已存在,是否重复提交?") return failed(message="重复提交结果") except Result.DoesNotExist: # 读取nodes和edges,生成结果文件 nodeFile = File(type='csv', usage='result', content='node', user=plan.user) nodeFile.save() if not nodeFile.generate(nodes) == OK: return failed(message="保存结果文件失败") edgeFile = File(type='csv', usage='result', content='edge', user=plan.user) edgeFile.save() if not edgeFile.generate(edges) == OK: return failed(message="保存结果文件失败") nodeFile.associate = edgeFile edgeFile.associate = nodeFile nodeFile.save() edgeFile.save() result = Result() result.plan = plan result.mission = mission result.user = plan.user result.nodeFile = nodeFile result.edgeFile = edgeFile result.save() return success(message="保存结果文件成功")