KeywordRetriever/retriever/views.py

48 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.shortcuts import render
from django.urls import reverse_lazy
from django.views import View
from django.views.generic import FormView
from retriever.forms import UploadForm
from retriever.models import RetrieverTask, UploadFile, KeywordParagraph, Keywords
from .tasks import start_retriever_job
# Create your views here.
class KeywordRetrieverView(FormView):
form_class = UploadForm
template_name = "index.html" # Replace with your template.
# def get(self, request, *args, **kwargs):
# form = FileFieldForm()
# return render(request, 'index.html', {'form': form})
def form_valid(self, form):
# 创建任务
keyword_list = list(Keywords.objects.filter(is_active=True).values_list('keyword', flat=True))
r_task = RetrieverTask.objects.create(task_keywords=keyword_list)
self.task_uuid = r_task.task_uuid
# print(r_task.task_keywords)
# 将上传的文件保存到数据库
for each in form.cleaned_data['attachments']:
UploadFile.objects.create(related_task=r_task, file_name=each.name, file=each)
return super(KeywordRetrieverView, self).form_valid(form)
def get_success_url(self):
# 重写success_url跳转到任务查看页面
return reverse_lazy('task_viewer', kwargs={'task_uuid': self.task_uuid})
class TaskViewerView(View):
def get(self, requests, task_uuid):
# print(self.kwargs['task_uuid'])
current_task = RetrieverTask.objects.get(task_uuid=task_uuid) # 获取当前任务
if not current_task.task_started:
# 如果任务未开始,则调用异步任务
current_task.task_started = True
current_task.save()
start_retriever_job.delay(current_task.task_uuid) # 调用异步任务
return render(requests, 'task_viewer.html', {'current_task': current_task})