48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
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})
|