tasklistview.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import datetime
  2. from django.http import HttpResponse
  3. from rest_framework.response import Response
  4. from rest_framework.views import APIView
  5. from apps.project.models import RetrievalProject
  6. import logging
  7. from apps.task.models import RetrievalTask
  8. logger = logging.getLogger('django')
  9. class TaskListView(APIView):
  10. # create retrievalTask
  11. @staticmethod
  12. def post(request, *args, **kwargs):
  13. title = request.POST.get('title')
  14. description = request.POST.get('description')
  15. task_type = request.POST.get('type')
  16. project_id = request.POST.get('project_id')
  17. create_time = update_time = datetime.datetime.now()
  18. if not project_id:
  19. logger.error('未输入项目id,创建失败')
  20. return HttpResponse(status=500, content='未输入项目id,创建失败')
  21. project_id = int(project_id)
  22. project = RetrievalProject.objects.filter(id=project_id, delete=False)
  23. if not project:
  24. logger.error("项目已删除或不存在")
  25. return HttpResponse(status=500, content='项目已删除或不存在')
  26. project = project[0]
  27. if not title:
  28. logger.error('任务名称不能为空')
  29. return HttpResponse(status=500, content='任务名称不能为空')
  30. if not task_type:
  31. logger.error('任务类型不能为空')
  32. return HttpResponse(status=500, content='任务类型不能为空')
  33. task = RetrievalTask.objects.create(title=title, type=task_type, project=project, description=description,
  34. state=0, create_time=create_time, update_time=update_time, delete=False)
  35. return Response({
  36. 'id': task.id,
  37. 'title': task.title,
  38. 'type': task.type,
  39. 'description': task.description,
  40. 'state': task.state,
  41. 'create_time': create_time,
  42. 'update_time': update_time
  43. })
  44. # get task list
  45. @staticmethod
  46. def get(request, *args, **kwargs):
  47. title = request.GET.get('title')
  48. state = request.GET.get('state')
  49. task_type = request.GET.get('type')
  50. sort = request.GET.get('sort')
  51. task_all = RetrievalTask.objects.order_by('id').filter(delete=False)
  52. if title:
  53. task_all = task_all.filter(title__contains=title)
  54. if task_type:
  55. task_all = task_all.filter(type__contains=task_type)
  56. if state:
  57. state = int(state)
  58. task_all = task_all.filter(state=state)
  59. if sort:
  60. task_all = task_all.order_by(sort)
  61. if not task_all:
  62. return Response([])
  63. info = []
  64. for task in task_all.all():
  65. info.append({
  66. 'id': task.id,
  67. 'title': task.title,
  68. 'description': task.description,
  69. 'state': task.state,
  70. 'type': task.type,
  71. 'create_time': task.create_time,
  72. 'update_time': task.update_time
  73. })
  74. return Response(info)