from sqladmin import ModelView from app.song.models import Song, SongTimestamp class SongAdmin(ModelView, model=Song): name = "노래" name_plural = "노래 목록" icon = "fa-solid fa-headphones" category = "노래 관리" page_size = 20 column_list = [ "id", "project_id", "lyric_id", "task_id", "suno_task_id", "status", "language", "created_at", ] column_details_list = [ "id", "project_id", "lyric_id", "task_id", "suno_task_id", "status", "language", "song_prompt", "song_result_url", "created_at", ] # 폼(생성/수정)에서 제외 form_excluded_columns = ["created_at", "videos"] column_searchable_list = [ Song.task_id, Song.suno_task_id, Song.status, Song.language, ] column_default_sort = (Song.created_at, True) # True: DESC (최신순) column_sortable_list = [ Song.id, Song.project_id, Song.lyric_id, Song.status, Song.language, Song.created_at, ] column_labels = { "id": "ID", "project_id": "프로젝트 ID", "lyric_id": "가사 ID", "task_id": "작업 ID", "suno_task_id": "Suno 작업 ID", "status": "상태", "language": "언어", "song_prompt": "프롬프트", "song_result_url": "결과 URL", "created_at": "생성일시", } class SongTimestampAdmin(ModelView, model=SongTimestamp): name = "노래 타임스탬프" name_plural = "노래 타임스탬프 목록" icon = "fa-solid fa-clock" category = "노래 관리" page_size = 20 column_list = [ "id", "suno_audio_id", "order_idx", "lyric_line", "start_time", "end_time", "created_at", ] column_details_list = [ "id", "suno_audio_id", "order_idx", "lyric_line", "start_time", "end_time", "created_at", ] form_excluded_columns = ["created_at"] column_searchable_list = [ SongTimestamp.suno_audio_id, SongTimestamp.lyric_line, ] column_default_sort = (SongTimestamp.created_at, True) column_sortable_list = [ SongTimestamp.id, SongTimestamp.suno_audio_id, SongTimestamp.order_idx, SongTimestamp.start_time, SongTimestamp.end_time, SongTimestamp.created_at, ] column_labels = { "id": "ID", "suno_audio_id": "Suno 오디오 ID", "order_idx": "순서", "lyric_line": "가사", "start_time": "시작 시간", "end_time": "종료 시간", "created_at": "생성일시", }