1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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)
|