mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 12:19:06 +00:00
server: add reviewed field in transcript
This commit is contained in:
32
server/migrations/versions/b9348748bbbc_reviewed.py
Normal file
32
server/migrations/versions/b9348748bbbc_reviewed.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
"""reviewed
|
||||||
|
|
||||||
|
Revision ID: b9348748bbbc
|
||||||
|
Revises: 125031f7cb78
|
||||||
|
Create Date: 2023-12-13 15:37:51.303970
|
||||||
|
|
||||||
|
"""
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects import sqlite
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = 'b9348748bbbc'
|
||||||
|
down_revision: Union[str, None] = '125031f7cb78'
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('transcript', sa.Column('reviewed', sa.Boolean(), server_default=sa.text('0'), nullable=False))
|
||||||
|
op.drop_column('transcript', 'diarization')
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('transcript', sa.Column('diarization', sqlite.JSON(), nullable=True))
|
||||||
|
op.drop_column('transcript', 'reviewed')
|
||||||
|
# ### end Alembic commands ###
|
||||||
@@ -12,6 +12,7 @@ from reflector.db import database, metadata
|
|||||||
from reflector.processors.types import Word as ProcessorWord
|
from reflector.processors.types import Word as ProcessorWord
|
||||||
from reflector.settings import settings
|
from reflector.settings import settings
|
||||||
from reflector.storage import Storage
|
from reflector.storage import Storage
|
||||||
|
from sqlalchemy.sql import false
|
||||||
|
|
||||||
transcripts = sqlalchemy.Table(
|
transcripts = sqlalchemy.Table(
|
||||||
"transcript",
|
"transcript",
|
||||||
@@ -30,6 +31,9 @@ transcripts = sqlalchemy.Table(
|
|||||||
sqlalchemy.Column("participants", sqlalchemy.JSON),
|
sqlalchemy.Column("participants", sqlalchemy.JSON),
|
||||||
sqlalchemy.Column("source_language", sqlalchemy.String, nullable=True),
|
sqlalchemy.Column("source_language", sqlalchemy.String, nullable=True),
|
||||||
sqlalchemy.Column("target_language", sqlalchemy.String, nullable=True),
|
sqlalchemy.Column("target_language", sqlalchemy.String, nullable=True),
|
||||||
|
sqlalchemy.Column(
|
||||||
|
"reviewed", sqlalchemy.Boolean, nullable=False, server_default=false()
|
||||||
|
),
|
||||||
sqlalchemy.Column(
|
sqlalchemy.Column(
|
||||||
"audio_location",
|
"audio_location",
|
||||||
sqlalchemy.String,
|
sqlalchemy.String,
|
||||||
@@ -138,6 +142,7 @@ class Transcript(BaseModel):
|
|||||||
target_language: str = "en"
|
target_language: str = "en"
|
||||||
share_mode: Literal["private", "semi-private", "public"] = "private"
|
share_mode: Literal["private", "semi-private", "public"] = "private"
|
||||||
audio_location: str = "local"
|
audio_location: str = "local"
|
||||||
|
reviewed: bool = False
|
||||||
|
|
||||||
def add_event(self, event: str, data: BaseModel) -> TranscriptEvent:
|
def add_event(self, event: str, data: BaseModel) -> TranscriptEvent:
|
||||||
ev = TranscriptEvent(event=event, data=data.model_dump())
|
ev = TranscriptEvent(event=event, data=data.model_dump())
|
||||||
|
|||||||
@@ -196,3 +196,29 @@ async def test_transcript_delete():
|
|||||||
|
|
||||||
response = await ac.get(f"/transcripts/{tid}")
|
response = await ac.get(f"/transcripts/{tid}")
|
||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_transcript_mark_reviewed():
|
||||||
|
from reflector.app import app
|
||||||
|
|
||||||
|
async with AsyncClient(app=app, base_url="http://test/v1") as ac:
|
||||||
|
response = await ac.post("/transcripts", json={"name": "test"})
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json()["name"] == "test"
|
||||||
|
assert response.json()["reviewed"] is False
|
||||||
|
|
||||||
|
tid = response.json()["id"]
|
||||||
|
|
||||||
|
response = await ac.get(f"/transcripts/{tid}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json()["name"] == "test"
|
||||||
|
assert response.json()["reviewed"] is False
|
||||||
|
|
||||||
|
response = await ac.patch(f"/transcripts/{tid}", json={"reviewed": True})
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json()["reviewed"] is True
|
||||||
|
|
||||||
|
response = await ac.get(f"/transcripts/{tid}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json()["reviewed"] is True
|
||||||
|
|||||||
Reference in New Issue
Block a user