Skip to content

Commit 15c7e37

Browse files
committed
refac
1 parent b1c2536 commit 15c7e37

15 files changed

Lines changed: 2903 additions & 368 deletions

File tree

backend/open_webui/config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -857,6 +857,16 @@ def reachable(host: str, port: int) -> bool:
857857

858858
EXTERNAL_DOCUMENT_LOADER_API_KEY = os.getenv('EXTERNAL_DOCUMENT_LOADER_API_KEY', '')
859859

860+
external_document_loader_headers = os.getenv('EXTERNAL_DOCUMENT_LOADER_HEADERS', '')
861+
try:
862+
external_document_loader_headers = json.loads(external_document_loader_headers)
863+
except json.JSONDecodeError:
864+
external_document_loader_headers = {}
865+
if not isinstance(external_document_loader_headers, dict):
866+
external_document_loader_headers = {}
867+
868+
EXTERNAL_DOCUMENT_LOADER_HEADERS = external_document_loader_headers
869+
860870
TIKA_SERVER_URL = os.getenv('TIKA_SERVER_URL', 'http://tika:9998')
861871

862872
DOCLING_SERVER_URL = os.getenv('DOCLING_SERVER_URL', 'http://docling:5001')
@@ -2652,6 +2662,7 @@ def feishu_oauth_register(oauth: OAuth):
26522662
'rag.mineru_file_extensions': MINERU_FILE_EXTENSIONS,
26532663
'rag.external_document_loader_url': EXTERNAL_DOCUMENT_LOADER_URL,
26542664
'rag.external_document_loader_api_key': EXTERNAL_DOCUMENT_LOADER_API_KEY,
2665+
'rag.external_document_loader_headers': EXTERNAL_DOCUMENT_LOADER_HEADERS,
26552666
'rag.tika_server_url': TIKA_SERVER_URL,
26562667
'rag.docling_server_url': DOCLING_SERVER_URL,
26572668
'rag.docling_api_key': DOCLING_API_KEY,

backend/open_webui/models/knowledge.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,17 @@ async def search_knowledge_bases(
286286
elif view_option == 'shared':
287287
stmt = stmt.filter(Knowledge.user_id != user_id)
288288

289+
source = filter.get('source')
290+
if source == 'external':
291+
stmt = stmt.filter(Knowledge.meta['source'].as_string() == 'external')
292+
elif source == 'local':
293+
stmt = stmt.filter(
294+
or_(
295+
Knowledge.meta.is_(None),
296+
Knowledge.meta['source'].as_string() != 'external',
297+
)
298+
)
299+
289300
stmt = AccessGrants.has_permission_filter(
290301
db=db,
291302
query=stmt,
@@ -765,6 +776,25 @@ async def update_knowledge_data_by_id(
765776
log.exception(e)
766777
return None
767778

779+
async def update_knowledge_meta_by_id(
780+
self, id: str, meta: dict, db: Optional[AsyncSession] = None
781+
) -> Optional[KnowledgeModel]:
782+
try:
783+
async with get_async_db_context(db) as db:
784+
await db.execute(
785+
update(Knowledge)
786+
.filter_by(id=id)
787+
.values(
788+
meta=meta,
789+
updated_at=int(time.time()),
790+
)
791+
)
792+
await db.commit()
793+
return await self.get_knowledge_by_id(id=id, db=db)
794+
except Exception as e:
795+
log.exception(e)
796+
return None
797+
768798
async def delete_knowledge_by_id(self, id: str, db: Optional[AsyncSession] = None) -> bool:
769799
try:
770800
async with get_async_db_context(db) as db:

0 commit comments

Comments
 (0)