versionlistview.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.http import HttpResponse
  2. from rest_framework.response import Response
  3. from rest_framework.views import APIView
  4. from apps.software.models import Software, Version
  5. from apps.task.models import TestCase
  6. from apps.user.middleware.rolecontrol import RoleControl
  7. class VersionListView(APIView):
  8. # create version_list
  9. @staticmethod
  10. @RoleControl
  11. def get(request, *args, **kwargs):
  12. print("111")
  13. software_id = request.GET.get('software_id')
  14. sort = request.GET.get('sort')
  15. version_all = Version.objects.filter(delete=False).order_by('-create_time')
  16. if software_id:
  17. software = Software.objects.filter(id=software_id, delete=False)
  18. if not software:
  19. return HttpResponse(status=404, content='软件不存在')
  20. software = software[0]
  21. version_all = version_all.filter(software=software)
  22. version_infos = []
  23. if not version_all:
  24. return Response(version_infos)
  25. if sort:
  26. version_all = version_all.order_by(sort)
  27. for version in version_all:
  28. software = Software.objects.filter(id=version.software_id, delete=False)[0]
  29. fail_num = len(TestCase.objects.filter(software=software, version=version.number, state=2, delete=False))
  30. version_infos.append({
  31. 'software_id': software.id,
  32. 'software_name': software.name,
  33. 'version_number': version.number,
  34. 'create_time': version.create_time,
  35. 'fail_num': fail_num
  36. })
  37. return Response(version_infos)