mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-05-28 12:39:54 +02:00
* dedupe make_private_persona and update test * add comment * comments, and just have duplicate user id's for the test instead of modifying edit * found the magic word --------- Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from uuid import UUID
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from onyx.configs.constants import NotificationType
|
|
from onyx.db.models import Persona__User
|
|
from onyx.db.models import Persona__UserGroup
|
|
from onyx.db.notification import create_notification
|
|
from onyx.server.features.persona.models import PersonaSharedNotificationData
|
|
|
|
|
|
def make_persona_private(
|
|
persona_id: int,
|
|
user_ids: list[UUID] | None,
|
|
group_ids: list[int] | None,
|
|
db_session: Session,
|
|
) -> None:
|
|
"""NOTE(rkuo): This function batches all updates into a single commit. If we don't
|
|
dedupe the inputs, the commit will exception."""
|
|
|
|
db_session.query(Persona__User).filter(
|
|
Persona__User.persona_id == persona_id
|
|
).delete(synchronize_session="fetch")
|
|
db_session.query(Persona__UserGroup).filter(
|
|
Persona__UserGroup.persona_id == persona_id
|
|
).delete(synchronize_session="fetch")
|
|
|
|
if user_ids:
|
|
user_ids_set = set(user_ids)
|
|
for user_id in user_ids_set:
|
|
db_session.add(Persona__User(persona_id=persona_id, user_id=user_id))
|
|
|
|
create_notification(
|
|
user_id=user_id,
|
|
notif_type=NotificationType.PERSONA_SHARED,
|
|
db_session=db_session,
|
|
additional_data=PersonaSharedNotificationData(
|
|
persona_id=persona_id,
|
|
).model_dump(),
|
|
)
|
|
|
|
if group_ids:
|
|
group_ids_set = set(group_ids)
|
|
for group_id in group_ids_set:
|
|
db_session.add(
|
|
Persona__UserGroup(persona_id=persona_id, user_group_id=group_id)
|
|
)
|
|
|
|
db_session.commit()
|