api_rawDataTrans.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from django.contrib import auth
  2. from rest_framework.views import APIView
  3. from rest_framework.response import Response
  4. from rest_framework import status
  5. from rest_framework.authtoken.models import Token
  6. from rest_framework.authentication import BasicAuthentication, TokenAuthentication
  7. from .serializers import UserRegisterSerializer
  8. from django.middleware.csrf import get_token
  9. from django.contrib.auth import login
  10. from api.utils import *
  11. from api.models import File, Mission, Plan, Result
  12. import requests
  13. import json, csv
  14. class RawDataTrans(APIView):
  15. authentication_classes = []
  16. permission_classes = []
  17. def get(self, request):
  18. if request.user:
  19. # 用户从前端发来请求
  20. return success("测试返回图数据")
  21. else:
  22. # 进程管理器发来请求
  23. # mission = Mission.objects.get(id=int(request.data.get('missionId')))
  24. plan = Plan.objects.get(id=int(request.data.get('planId')))
  25. return success("测试返回图数据")
  26. def post(self, request):
  27. mission = Mission.objects.get(id=int(request.data.get('missionId')))
  28. plan = Plan.objects.get(id=int(request.data.get('planId')))
  29. nodes = request.data.get('nodes')
  30. edges = request.data.get('edges')
  31. for param in [mission, plan, nodes, edges]:
  32. if not param:
  33. print("结果传递参数不足")
  34. return failed(message="缺少结果参数")
  35. try:
  36. result = plan.own_result
  37. print("PLAN结果数据已存在,是否重复提交?")
  38. return failed(message="重复提交结果")
  39. except Result.DoesNotExist:
  40. # 读取nodes和edges,生成结果文件
  41. nodeFile = File(type='csv', usage='result', content='node', user=plan.user)
  42. nodeFile.save()
  43. if not nodeFile.generate(nodes) == OK:
  44. return failed(message="保存结果文件失败")
  45. edgeFile = File(type='csv', usage='result', content='edge', user=plan.user)
  46. edgeFile.save()
  47. if not edgeFile.generate(edges) == OK:
  48. return failed(message="保存结果文件失败")
  49. nodeFile.associate = edgeFile
  50. edgeFile.associate = nodeFile
  51. nodeFile.save()
  52. edgeFile.save()
  53. result = Result()
  54. result.plan = plan
  55. result.mission = mission
  56. result.user = plan.user
  57. result.nodeFile = nodeFile
  58. result.edgeFile = edgeFile
  59. result.save()
  60. return success(message="保存结果文件成功")