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 Results(APIView): def get(self, request): user = request.user try: missionJson = json.loads(request.GET.get('mission')) print(missionJson) mission = Mission.objects.get(id=missionJson['id']) if not mission in user.own_missions.all(): return failed(message="无该任务访问权限") except Mission.DoesNotExist: return failed(message="任务不存在") resultsData = [] # 待办:是否需要在此处检测任务完成与否?在rowDataTrans中也有检测,仅当后台scheduler没有反馈正确结果时才需要用到该处的检测 missionCompleted = True for plan in mission.own_plans.all(): try: if not plan.parent: # 根节点不是实际的plan,没有result continue result = plan.own_result if not result.progress == 100: missionCompleted = False resultsData.append({ 'planId': plan.id, 'progress': result.progress, 'resultId': result.id, }) except Result.DoesNotExist: # 存在没有结果的plan,mission仍未结束 missionCompleted = False resultsData.append({ 'planId': plan.id, 'progress': 0, 'resultId': 0, }) # 任务下属Plan已全部完成 if missionCompleted: mission.state = 'done' mission.save() resultsData.append({ 'missionId': mission.id, 'status': mission.state, }) return success(data=resultsData)