mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 12:49:06 +00:00
fix: return participant emails from transcript endpoint (#769)
* Return participant emails from transcript endpoint * Fix broken test
This commit is contained in:
@@ -88,5 +88,11 @@ class UserController:
|
|||||||
results = await get_database().fetch_all(query)
|
results = await get_database().fetch_all(query)
|
||||||
return [User(**r) for r in results]
|
return [User(**r) for r in results]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def get_by_ids(user_ids: list[NonEmptyString]) -> dict[str, User]:
|
||||||
|
query = users.select().where(users.c.id.in_(user_ids))
|
||||||
|
results = await get_database().fetch_all(query)
|
||||||
|
return {user.id: User(**user) for user in results}
|
||||||
|
|
||||||
|
|
||||||
user_controller = UserController()
|
user_controller = UserController()
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ from reflector.db.transcripts import (
|
|||||||
TranscriptTopic,
|
TranscriptTopic,
|
||||||
transcripts_controller,
|
transcripts_controller,
|
||||||
)
|
)
|
||||||
|
from reflector.db.users import user_controller
|
||||||
from reflector.processors.types import Transcript as ProcessorTranscript
|
from reflector.processors.types import Transcript as ProcessorTranscript
|
||||||
from reflector.processors.types import Word
|
from reflector.processors.types import Word
|
||||||
from reflector.schemas.transcript_formats import TranscriptFormat, TranscriptSegment
|
from reflector.schemas.transcript_formats import TranscriptFormat, TranscriptSegment
|
||||||
@@ -111,8 +112,12 @@ class GetTranscriptMinimal(BaseModel):
|
|||||||
audio_deleted: bool | None = None
|
audio_deleted: bool | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class TranscriptParticipantWithEmail(TranscriptParticipant):
|
||||||
|
email: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class GetTranscriptWithParticipants(GetTranscriptMinimal):
|
class GetTranscriptWithParticipants(GetTranscriptMinimal):
|
||||||
participants: list[TranscriptParticipant] | None
|
participants: list[TranscriptParticipantWithEmail] | None
|
||||||
|
|
||||||
|
|
||||||
class GetTranscriptWithText(GetTranscriptWithParticipants):
|
class GetTranscriptWithText(GetTranscriptWithParticipants):
|
||||||
@@ -468,6 +473,18 @@ async def transcript_get(
|
|||||||
|
|
||||||
is_multitrack = await _get_is_multitrack(transcript)
|
is_multitrack = await _get_is_multitrack(transcript)
|
||||||
|
|
||||||
|
participants = []
|
||||||
|
if transcript.participants:
|
||||||
|
user_ids = [p.user_id for p in transcript.participants if p.user_id is not None]
|
||||||
|
users_dict = await user_controller.get_by_ids(user_ids) if user_ids else {}
|
||||||
|
for p in transcript.participants:
|
||||||
|
user = users_dict.get(p.user_id) if p.user_id else None
|
||||||
|
participants.append(
|
||||||
|
TranscriptParticipantWithEmail(
|
||||||
|
**p.model_dump(), email=user.email if user else None
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
base_data = {
|
base_data = {
|
||||||
"id": transcript.id,
|
"id": transcript.id,
|
||||||
"user_id": transcript.user_id,
|
"user_id": transcript.user_id,
|
||||||
@@ -487,7 +504,7 @@ async def transcript_get(
|
|||||||
"source_kind": transcript.source_kind,
|
"source_kind": transcript.source_kind,
|
||||||
"room_id": transcript.room_id,
|
"room_id": transcript.room_id,
|
||||||
"audio_deleted": transcript.audio_deleted,
|
"audio_deleted": transcript.audio_deleted,
|
||||||
"participants": transcript.participants,
|
"participants": participants,
|
||||||
}
|
}
|
||||||
|
|
||||||
if transcript_format == "text":
|
if transcript_format == "text":
|
||||||
|
|||||||
Reference in New Issue
Block a user