Merge branch 'main' into default-data

This commit is contained in:
Edwin Jose 2025-09-04 15:41:03 -04:00
commit 34739193eb
2 changed files with 57 additions and 13 deletions

View file

@ -13,12 +13,25 @@ async def upload(request: Request, document_service, session_manager):
user = request.state.user user = request.state.user
jwt_token = request.state.jwt_token jwt_token = request.state.jwt_token
from config.settings import is_no_auth_mode
# In no-auth mode, pass None for owner fields so documents have no owner
# This allows all users to see them when switching to auth mode
if is_no_auth_mode():
owner_user_id = None
owner_name = None
owner_email = None
else:
owner_user_id = user.user_id
owner_name = user.name
owner_email = user.email
result = await document_service.process_upload_file( result = await document_service.process_upload_file(
upload_file, upload_file,
owner_user_id=user.user_id, owner_user_id=owner_user_id,
jwt_token=jwt_token, jwt_token=jwt_token,
owner_name=user.name, owner_name=owner_name,
owner_email=user.email, owner_email=owner_email,
) )
return JSONResponse(result, status_code=201) # Created return JSONResponse(result, status_code=201) # Created
except Exception as e: except Exception as e:
@ -48,12 +61,25 @@ async def upload_path(request: Request, task_service, session_manager):
user = request.state.user user = request.state.user
jwt_token = request.state.jwt_token jwt_token = request.state.jwt_token
from config.settings import is_no_auth_mode
# In no-auth mode, pass None for owner fields so documents have no owner
if is_no_auth_mode():
owner_user_id = None
owner_name = None
owner_email = None
else:
owner_user_id = user.user_id
owner_name = user.name
owner_email = user.email
task_id = await task_service.create_upload_task( task_id = await task_service.create_upload_task(
user.user_id, owner_user_id,
file_paths, file_paths,
jwt_token=jwt_token, jwt_token=jwt_token,
owner_name=user.name, owner_name=owner_name,
owner_email=user.email, owner_email=owner_email,
) )
return JSONResponse( return JSONResponse(
@ -146,18 +172,31 @@ async def upload_bucket(request: Request, task_service, session_manager):
jwt_token = request.state.jwt_token jwt_token = request.state.jwt_token
from models.processors import S3FileProcessor from models.processors import S3FileProcessor
from config.settings import is_no_auth_mode
# In no-auth mode, pass None for owner fields so documents have no owner
if is_no_auth_mode():
owner_user_id = None
owner_name = None
owner_email = None
task_user_id = None
else:
owner_user_id = user.user_id
owner_name = user.name
owner_email = user.email
task_user_id = user.user_id
processor = S3FileProcessor( processor = S3FileProcessor(
task_service.document_service, task_service.document_service,
bucket, bucket,
s3_client=s3_client, s3_client=s3_client,
owner_user_id=user.user_id, owner_user_id=owner_user_id,
jwt_token=jwt_token, jwt_token=jwt_token,
owner_name=user.name, owner_name=owner_name,
owner_email=user.email, owner_email=owner_email,
) )
task_id = await task_service.create_custom_task(user.user_id, keys, processor) task_id = await task_service.create_custom_task(task_user_id, keys, processor)
return JSONResponse( return JSONResponse(
{"task_id": task_id, "total_files": len(keys), "status": "accepted"}, {"task_id": task_id, "total_files": len(keys), "status": "accepted"},

View file

@ -207,13 +207,18 @@ class S3FileProcessor(TaskProcessor):
"page": chunk["page"], "page": chunk["page"],
"text": chunk["text"], "text": chunk["text"],
"chunk_embedding": vect, "chunk_embedding": vect,
"owner": self.owner_user_id,
"owner_name": self.owner_name,
"owner_email": self.owner_email,
"file_size": file_size, "file_size": file_size,
"connector_type": "s3", # S3 uploads "connector_type": "s3", # S3 uploads
"indexed_time": datetime.datetime.now().isoformat(), "indexed_time": datetime.datetime.now().isoformat(),
} }
# Only set owner fields if owner_user_id is provided (for no-auth mode support)
if self.owner_user_id is not None:
chunk_doc["owner"] = self.owner_user_id
if self.owner_name is not None:
chunk_doc["owner_name"] = self.owner_name
if self.owner_email is not None:
chunk_doc["owner_email"] = self.owner_email
chunk_id = f"{slim_doc['id']}_{i}" chunk_id = f"{slim_doc['id']}_{i}"
try: try:
await opensearch_client.index( await opensearch_client.index(