|
28 | 28 | from common.event import ListenerManagement |
29 | 29 | from common.event.common import work_thread_pool |
30 | 30 | from common.exception.app_exception import AppApiException |
| 31 | +from common.field.common import UploadedFileField |
31 | 32 | from common.handle.impl.qa.csv_parse_qa_handle import CsvParseQAHandle |
32 | 33 | from common.handle.impl.qa.xls_parse_qa_handle import XlsParseQAHandle |
33 | 34 | from common.handle.impl.qa.xlsx_parse_qa_handle import XlsxParseQAHandle |
@@ -1503,6 +1504,38 @@ def delete_tags(self): |
1503 | 1504 | tag_id__in=tag_ids |
1504 | 1505 | ).delete() |
1505 | 1506 |
|
| 1507 | + class ReplaceSourceFile(serializers.Serializer): |
| 1508 | + workspace_id = serializers.CharField(required=True, label=_('workspace id')) |
| 1509 | + knowledge_id = serializers.UUIDField(required=True, label=_('knowledge id')) |
| 1510 | + document_id = serializers.UUIDField(required=True, label=_('document id')) |
| 1511 | + file = UploadedFileField(required=True, label=_("file")) |
| 1512 | + |
| 1513 | + def is_valid(self, *, raise_exception=False): |
| 1514 | + super().is_valid(raise_exception=True) |
| 1515 | + workspace_id = self.data.get('workspace_id') |
| 1516 | + query_set = QuerySet(Knowledge).filter(id=self.data.get('knowledge_id')) |
| 1517 | + if workspace_id and workspace_id != 'None': |
| 1518 | + query_set = query_set.filter(workspace_id=workspace_id) |
| 1519 | + if not query_set.exists(): |
| 1520 | + raise AppApiException(500, _('Knowledge id does not exist')) |
| 1521 | + if not QuerySet(Document).filter( |
| 1522 | + id=self.data.get('document_id'), |
| 1523 | + knowledge_id=self.data.get('knowledge_id') |
| 1524 | + ).exists(): |
| 1525 | + raise AppApiException(500, _('Document id does not exist')) |
| 1526 | + |
| 1527 | + def replace(self): |
| 1528 | + self.is_valid(raise_exception=True) |
| 1529 | + file = self.data.get('file') |
| 1530 | + source_file = QuerySet(File).filter(source_id=self.data.get('document_id')).first() |
| 1531 | + |
| 1532 | + if not source_file: |
| 1533 | + raise AppApiException(500, _('Source file not found')) |
| 1534 | + |
| 1535 | + source_file.save(file.read()) |
| 1536 | + |
| 1537 | + return True |
| 1538 | + |
1506 | 1539 |
|
1507 | 1540 | class FileBufferHandle: |
1508 | 1541 | buffer = None |
|
0 commit comments