Skip to content

Commit 0f751f9

Browse files
committed
Fix objref lookup in data sources
1 parent 618231f commit 0f751f9

File tree

4 files changed

+20
-29
lines changed

4 files changed

+20
-29
lines changed

llmstack/data/apis.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -574,12 +574,14 @@ def delete(self, request, uid):
574574
datasource.delete()
575575
return DRFResponse(status=204)
576576

577-
def process_add_entry_request(self, datasource: DataSource, source_data) -> List[DataDocument]:
577+
def process_add_entry_request(self, datasource: DataSource, source_data, request=None) -> List[DataDocument]:
578578
source_cls = datasource.pipeline_obj.source_cls
579579
if not source_cls:
580580
raise Exception("No source class found for data source")
581581
source = source_cls(**source_data)
582-
return source.get_data_documents(datasource_uuid=str(datasource.uuid))
582+
return source.get_data_documents(
583+
datasource_uuid=str(datasource.uuid), request_user=request.user if request else None
584+
)
583585

584586
def add_entry(self, request, uid):
585587
datasource = get_object_or_404(DataSource, uuid=uuid.UUID(uid))
@@ -594,7 +596,7 @@ def add_entry(self, request, uid):
594596
if not source_data:
595597
return DRFResponse({"errors": ["No source_data provided"]}, status=400)
596598

597-
documents = self.process_add_entry_request(datasource, source_data)
599+
documents = self.process_add_entry_request(datasource, source_data, request=request)
598600
for document in documents:
599601
create_result = DataSourceEntryViewSet().create_entry(user=request.user, document=document)
600602
process_result = DataSourceEntryViewSet().process_entry(request=None, uid=str(create_result.data["uuid"]))

llmstack/data/sources/files/archive.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ def get_data_documents(self, **kwargs) -> List[DataDocument]:
8686
archive_file = self.file
8787
# If objref:// is present, get the data URI from the objref
8888
if archive_file and archive_file.startswith("objref://"):
89-
archive_file = get_document_data_uri_from_objref(archive_file, datasource_uuid=kwargs["datasource_uuid"])
89+
archive_file = get_document_data_uri_from_objref(
90+
archive_file, datasource_uuid=kwargs["datasource_uuid"], request_user=kwargs["request_user"]
91+
)
9092

9193
if self.split_files:
9294
files = extract_archive_files(*validate_parse_data_uri(archive_file))

llmstack/data/sources/files/file.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ def get_data_documents(self, **kwargs) -> List[DataDocument]:
5555
list(
5656
map(
5757
lambda entry: (
58-
get_document_data_uri_from_objref(file_objref, datasource_uuid=kwargs["datasource_uuid"])
58+
get_document_data_uri_from_objref(
59+
file_objref,
60+
datasource_uuid=kwargs["datasource_uuid"],
61+
request_user=kwargs["request_user"],
62+
)
5963
if entry.startswith("objref://")
6064
else entry
6165
),

llmstack/data/sources/utils.py

+7-24
Original file line numberDiff line numberDiff line change
@@ -59,36 +59,19 @@ def create_source_document_asset(file, datasource_uuid, document_id):
5959

6060

6161
def get_source_document_asset_by_objref(objref):
62+
from llmstack.assets.utils import get_asset_by_objref_internal
6263
from llmstack.data.models import DataSourceEntryFiles
6364

64-
if not objref:
65-
return None
66-
asset = None
67-
try:
68-
category, uuid = objref.strip().split("//")[1].split("/")
69-
asset = DataSourceEntryFiles.get_asset_data_uri(DataSourceEntryFiles.objects.get(uuid=uuid), include_name=True)
70-
except Exception:
71-
pass
72-
65+
asset_obj = get_asset_by_objref_internal(objref)
66+
asset = DataSourceEntryFiles.get_asset_data_uri(asset_obj, include_name=True)
7367
return asset
7468

7569

76-
def get_document_data_uri_from_objref(objref, datasource_uuid):
70+
def get_document_data_uri_from_objref(objref, datasource_uuid, request_user):
71+
from llmstack.assets.utils import get_asset_by_objref
7772
from llmstack.data.models import DataSourceEntryFiles
7873

79-
if not objref:
80-
return None
81-
asset = None
82-
try:
83-
_, uuid = objref.strip().split("//")[1].split("/")
84-
asset_obj = DataSourceEntryFiles.objects.get(uuid=uuid)
85-
86-
if asset_obj.metadata.get("datasource_uuid") != datasource_uuid:
87-
return None
88-
89-
asset = DataSourceEntryFiles.get_asset_data_uri(asset_obj, include_name=True)
90-
91-
except Exception:
92-
pass
74+
asset_obj = get_asset_by_objref(objref, request_user, None)
75+
asset = DataSourceEntryFiles.get_asset_data_uri(asset_obj, include_name=True) if asset_obj else None
9376

9477
return asset

0 commit comments

Comments
 (0)