From 4c33d1a526c0533523b5e6709daf5af73b2b1460 Mon Sep 17 00:00:00 2001 From: Debanjum Date: Sun, 6 Jul 2025 11:44:36 -0700 Subject: [PATCH] Fallback to file based URI when document context URI is unset For files not synced after the previous release, context uri is unset. This results in failure to save chat messages that retrieve documents as the uri field cannot be unset so pre save validation fails --- src/khoj/database/models/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/khoj/database/models/__init__.py b/src/khoj/database/models/__init__.py index 1a10f962..e3294291 100644 --- a/src/khoj/database/models/__init__.py +++ b/src/khoj/database/models/__init__.py @@ -14,7 +14,7 @@ from django.dispatch import receiver from pgvector.django import VectorField from phonenumber_field.modelfields import PhoneNumberField from pydantic import BaseModel as PydanticBaseModel -from pydantic import Field +from pydantic import Field, model_validator logger = logging.getLogger(__name__) @@ -26,6 +26,19 @@ class Context(PydanticBaseModel): uri: str query: Optional[str] = None + @model_validator(mode="after") + def set_uri_fallback(self): + """Set the URI to existing deeplink URI. Fallback to file based URI if unset.""" + if self.uri and self.uri.strip(): + self.uri = self.uri + elif self.file and (self.file.startswith("http") or self.file.startswith("file://")): + self.uri = self.file + elif self.file: + self.uri = f"file://{self.file}" + else: + self.uri = None + return self + class CodeContextFile(PydanticBaseModel): filename: str