import datetime from django.http import HttpResponse from rest_framework.response import Response from rest_framework.views import APIView from apps.project.models import RetrievalProject import logging from apps.task.models import RetrievalTask logger = logging.getLogger('django') class TaskListView(APIView): # create retrievalTask @staticmethod def post(request, *args, **kwargs): title = request.POST.get('title') description = request.POST.get('description') task_type = request.POST.get('type') project_id = request.POST.get('project_id') create_time = update_time = datetime.datetime.now() if not project_id: logger.error('未输入项目id,创建失败') return HttpResponse(status=500, content='未输入项目id,创建失败') project_id = int(project_id) project = RetrievalProject.objects.filter(id=project_id, delete=False) if not project: logger.error("项目已删除或不存在") return HttpResponse(status=500, content='项目已删除或不存在') project = project[0] if not title: logger.error('任务名称不能为空') return HttpResponse(status=500, content='任务名称不能为空') if not task_type: logger.error('任务类型不能为空') return HttpResponse(status=500, content='任务类型不能为空') task = RetrievalTask.objects.create(title=title, type=task_type, project=project, description=description, state=0, create_time=create_time, update_time=update_time, delete=False) return Response({ 'id': task.id, 'title': task.title, 'type': task.type, 'description': task.description, 'state': task.state, 'create_time': create_time, 'update_time': update_time }) # get task list @staticmethod def get(request, *args, **kwargs): title = request.GET.get('title') state = request.GET.get('state') task_type = request.GET.get('type') sort = request.GET.get('sort') task_all = RetrievalTask.objects.order_by('id').filter(delete=False) if title: task_all = task_all.filter(title__contains=title) if task_type: task_all = task_all.filter(type__contains=task_type) if state: state = int(state) task_all = task_all.filter(state=state) if sort: task_all = task_all.order_by(sort) if not task_all: return Response([]) info = [] for task in task_all.all(): info.append({ 'id': task.id, 'title': task.title, 'description': task.description, 'state': task.state, 'type': task.type, 'create_time': task.create_time, 'update_time': task.update_time }) return Response(info)