Skip to content

Commit 40b18c5

Browse files
committed
fix
1 parent eb01eb9 commit 40b18c5

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

kubechat/db/models.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,7 @@ class Question(models.Model):
362362
gmt_deleted = models.DateTimeField(null=True, blank=True)
363363
relate_id = models.CharField(null=True, max_length=256)
364364

365-
def view(self):
366-
relate_documents = [document.id for document in self.documents.all()]
365+
def view(self, relate_documents):
367366
return {
368367
"id": str(self.id),
369368
"status": self.status,

kubechat/views/main.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -427,10 +427,12 @@ async def create_questions(request, collection_id):
427427
if collection is None:
428428
return fail(HTTPStatus.NOT_FOUND, "Collection not found")
429429
documents = await sync_to_async(collection.document_set.exclude)(status=DocumentStatus.DELETED)
430-
collection.need_generate = len(documents)
431-
await collection.asave()
432430
async for document in documents:
433431
generate_questions.delay(document.id)
432+
433+
documents = await sync_to_async(list)(documents)
434+
collection.need_generate = len(documents)
435+
await collection.asave()
434436
return success({})
435437

436438
@router.put("/collections/{collection_id}/questions")
@@ -454,9 +456,9 @@ async def update_question(request, collection_id, question_in: QuestionIn):
454456
return fail(HTTPStatus.NOT_FOUND, "Question not found")
455457

456458
question_instance.question = question_in.question
457-
question_instance.answer = question_in.answer if question_instance.answer else ""
459+
question_instance.answer = question_in.answer if question_in.answer else ""
458460
question_instance.status = QuestionStatus.PENDING
459-
question_instance.documents.clear()
461+
await sync_to_async(question_instance.documents.clear)()
460462

461463
if question_in.relate_ducuments:
462464
for document_id in question_in.relate_ducuments:
@@ -468,7 +470,8 @@ async def update_question(request, collection_id, question_in: QuestionIn):
468470
await question_instance.asave()
469471
update_index_for_question.delay(question_instance.id)
470472

471-
return success(question_instance.view())
473+
relate_documents = await sync_to_async(list)(question_instance.documents.all().values_list('id', flat=True))
474+
return success(question_instance.view(relate_documents))
472475

473476
@router.delete("/collections/{collection_id}/questions/{question_id}")
474477
async def delete_question(request, collection_id, question_id):
@@ -478,13 +481,16 @@ async def delete_question(request, collection_id, question_id):
478481
if collection is None:
479482
return fail(HTTPStatus.NOT_FOUND, "Collection not found")
480483

481-
question_instance = Question.objects.get(id=question_id)
484+
question_instance = await query_question(user, collection_id, question_id)
485+
if question_instance is None:
486+
return fail(HTTPStatus.NOT_FOUND, "Question not found")
482487
question_instance.status = QuestionStatus.DELETED
483488
question_instance.gmt_deleted = timezone.now()
484489
await question_instance.asave()
485490
update_index_for_question.delay(question_instance.id)
486491

487-
return success(question_instance.view())
492+
relate_documents = await sync_to_async(list)(question_instance.documents.all().values_list('id', flat=True))
493+
return success(question_instance.view(relate_documents))
488494

489495
@router.get("/collections/{collection_id}/questions")
490496
async def list_questions(request, collection_id):
@@ -496,7 +502,8 @@ async def list_questions(request, collection_id):
496502
pr = await query_questions(user, collection_id, build_pq(request))
497503
response = []
498504
async for question in pr.data:
499-
response.append(question.view())
505+
relate_documents = await sync_to_async(list)(question.documents.all().values_list('id', flat=True))
506+
response.append(question.view(relate_documents))
500507

501508
question_status = QuestionStatus.ACTIVE
502509
if collection.need_generate > 0:

0 commit comments

Comments
 (0)