From 8febdd4070ee67844e798250f37cf40cc286c0e9 Mon Sep 17 00:00:00 2001 From: pablonyx Date: Fri, 28 Feb 2025 11:21:18 -0800 Subject: [PATCH 1/2] k --- backend/onyx/db/persona.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/onyx/db/persona.py b/backend/onyx/db/persona.py index b879e426cf3..da3b242116a 100644 --- a/backend/onyx/db/persona.py +++ b/backend/onyx/db/persona.py @@ -214,8 +214,15 @@ def create_update_persona( if not create_persona_request.is_public: raise ValueError("Cannot make a default persona non public") - if user and user.role != UserRole.ADMIN: - raise ValueError("Only admins can make a default persona") + if user: + # Curators can edit default personas, but not make them + if ( + user.role == UserRole.CURATOR + or user.role == UserRole.GLOBAL_CURATOR + ): + create_persona_request.is_default_persona = None + elif user.role != UserRole.ADMIN: + raise ValueError("Only admins can make a default persona") persona = upsert_persona( persona_id=persona_id, @@ -428,7 +435,7 @@ def upsert_persona( remove_image: bool | None = None, search_start_date: datetime | None = None, builtin_persona: bool = False, - is_default_persona: bool = False, + is_default_persona: bool | None = None, label_ids: list[int] | None = None, chunks_above: int = CONTEXT_CHUNKS_ABOVE, chunks_below: int = CONTEXT_CHUNKS_BELOW, @@ -523,7 +530,11 @@ def upsert_persona( existing_persona.is_visible = is_visible existing_persona.search_start_date = search_start_date existing_persona.labels = labels or [] - existing_persona.is_default_persona = is_default_persona + existing_persona.is_default_persona = ( + is_default_persona + if is_default_persona is not None + else existing_persona.is_default_persona + ) # Do not delete any associations manually added unless # a new updated list is provided if document_sets is not None: @@ -575,7 +586,9 @@ def upsert_persona( display_priority=display_priority, is_visible=is_visible, search_start_date=search_start_date, - is_default_persona=is_default_persona, + is_default_persona=is_default_persona + if is_default_persona is not None + else False, labels=labels or [], ) db_session.add(new_persona) From d91ca1d56a05b094c4b083c260b231b7892febbe Mon Sep 17 00:00:00 2001 From: pablonyx Date: Fri, 28 Feb 2025 11:23:29 -0800 Subject: [PATCH 2/2] k --- backend/onyx/db/persona.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/onyx/db/persona.py b/backend/onyx/db/persona.py index da3b242116a..ae37b3f50a6 100644 --- a/backend/onyx/db/persona.py +++ b/backend/onyx/db/persona.py @@ -209,6 +209,7 @@ def create_update_persona( if not all_prompt_ids: raise ValueError("No prompt IDs provided") + is_default_persona: bool | None = create_persona_request.is_default_persona # Default persona validation if create_persona_request.is_default_persona: if not create_persona_request.is_public: @@ -220,7 +221,7 @@ def create_update_persona( user.role == UserRole.CURATOR or user.role == UserRole.GLOBAL_CURATOR ): - create_persona_request.is_default_persona = None + is_default_persona = None elif user.role != UserRole.ADMIN: raise ValueError("Only admins can make a default persona") @@ -248,7 +249,7 @@ def create_update_persona( num_chunks=create_persona_request.num_chunks, llm_relevance_filter=create_persona_request.llm_relevance_filter, llm_filter_extraction=create_persona_request.llm_filter_extraction, - is_default_persona=create_persona_request.is_default_persona, + is_default_persona=is_default_persona, ) versioned_make_persona_private = fetch_versioned_implementation(