database id fixes
This commit is contained in:
37
app.py
37
app.py
@@ -7,7 +7,7 @@ from textual.app import App, ComposeResult
|
||||
from textual.containers import Container, Horizontal, Vertical
|
||||
from textual.widgets import Header, Footer, Input, Button, Select, ListView, ListItem, DataTable, Label, Static
|
||||
from textual.screen import ModalScreen
|
||||
from typing import List, Optional
|
||||
from typing import List, Optional, cast
|
||||
from database import Database, Session
|
||||
from datetime import datetime
|
||||
import os
|
||||
@@ -31,7 +31,8 @@ class MoveCopyDialog(ModalScreen):
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
# Get currently selected project from tree to exclude from destination list
|
||||
current_project_id = self.app.filter_project_id if hasattr(self.app, 'filter_project_id') else None
|
||||
main_app = cast("SessionMoverApp", self.app)
|
||||
current_project_id = main_app.filter_project_id if hasattr(main_app, 'filter_project_id') else None
|
||||
|
||||
project_options = sorted(
|
||||
[
|
||||
@@ -68,7 +69,7 @@ class MoveCopyDialog(ModalScreen):
|
||||
yield Button("Confirm", variant="primary", id="confirm-btn", disabled=True)
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.query_one("#dialog").border_title = f"{'Copy' if self.is_copy else 'Move'} Sessions"
|
||||
self.query_one("#dialog", Container).border_title = f"{'Copy' if self.is_copy else 'Move'} Sessions"
|
||||
|
||||
def on_select_changed(self, event):
|
||||
if event.select.id == "project-select":
|
||||
@@ -77,12 +78,12 @@ class MoveCopyDialog(ModalScreen):
|
||||
self.target_workspace = event.value if event.value else None
|
||||
|
||||
self.update_preview()
|
||||
confirm_btn = self.query_one("#confirm-btn")
|
||||
confirm_btn = self.query_one("#confirm-btn", Button)
|
||||
confirm_btn.disabled = not (self.target_project is not None)
|
||||
|
||||
def update_preview(self):
|
||||
if not self.target_project:
|
||||
preview = self.query_one("#sql-preview")
|
||||
preview = self.query_one("#sql-preview", Static)
|
||||
preview.update("Select a project to see preview")
|
||||
return
|
||||
|
||||
@@ -111,7 +112,7 @@ class MoveCopyDialog(ModalScreen):
|
||||
if self.is_copy:
|
||||
lines.append("\nNote: Copy creates new sessions with all related data.")
|
||||
|
||||
self.query_one("#sql-preview").update("\n".join(lines))
|
||||
self.query_one("#sql-preview", Static).update("\n".join(lines))
|
||||
|
||||
def on_button_pressed(self, event: Button.Pressed) -> None:
|
||||
if event.button.id == "cancel-btn":
|
||||
@@ -141,13 +142,11 @@ class MoveCopyDialog(ModalScreen):
|
||||
)
|
||||
|
||||
if success:
|
||||
self.app.notify(f"{'Copied' if self.is_copy else 'Moved'} {len(self.sessions)} session(s) successfully!", severity="information")
|
||||
self.app.pop_screen()
|
||||
# Get reference to main app and refresh
|
||||
app = self.app
|
||||
if hasattr(app, 'refresh_sessions'):
|
||||
app.refresh_project_list()
|
||||
app.refresh_sessions()
|
||||
main_app = cast("SessionMoverApp", self.app)
|
||||
main_app.notify(f"{'Copied' if self.is_copy else 'Moved'} {len(self.sessions)} session(s) successfully!", severity="information")
|
||||
main_app.pop_screen()
|
||||
main_app.refresh_project_list()
|
||||
main_app.refresh_sessions()
|
||||
else:
|
||||
self.app.notify(f"Operation failed: {sql}", severity="error")
|
||||
|
||||
@@ -194,7 +193,7 @@ class DeleteConfirmDialog(ModalScreen):
|
||||
yield Button("Delete", variant="error", id="confirm-btn")
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.query_one("#dialog").border_title = "Confirm Delete"
|
||||
self.query_one("#dialog", Container).border_title = "Confirm Delete"
|
||||
|
||||
def on_button_pressed(self, event: Button.Pressed) -> None:
|
||||
if event.button.id == "cancel-btn":
|
||||
@@ -470,8 +469,8 @@ class SessionMoverApp(App):
|
||||
|
||||
def refresh_sessions(self) -> None:
|
||||
"""Update the sessions table."""
|
||||
table = self.query_one("#sessions-table")
|
||||
|
||||
table = self.query_one("#sessions-table", DataTable)
|
||||
|
||||
# Save cursor position before clearing
|
||||
cursor_row = table.cursor_row
|
||||
cursor_column = table.cursor_column
|
||||
@@ -509,7 +508,7 @@ class SessionMoverApp(App):
|
||||
|
||||
# Update selection count
|
||||
count = len(self.selected_session_ids)
|
||||
count_widget = self.query_one("#selection-count")
|
||||
count_widget = self.query_one("#selection-count", Static)
|
||||
if count > 0:
|
||||
count_widget.update(f"✓ {count} session(s) selected")
|
||||
else:
|
||||
@@ -542,7 +541,7 @@ class SessionMoverApp(App):
|
||||
self.filter_project_id = proj_id
|
||||
self.filter_workspace_id = None
|
||||
|
||||
status = self.query_one("#current-selection")
|
||||
status = self.query_one("#current-selection", Static)
|
||||
if proj:
|
||||
status.update(f"📁 {proj.worktree}")
|
||||
|
||||
@@ -555,7 +554,7 @@ class SessionMoverApp(App):
|
||||
|
||||
def action_toggle_selection(self) -> None:
|
||||
"""Toggle selection of current row."""
|
||||
table = self.query_one("#sessions-table")
|
||||
table = self.query_one("#sessions-table", DataTable)
|
||||
row_key = table.cursor_row
|
||||
if row_key is not None:
|
||||
sessions = self.db.get_sessions(
|
||||
|
||||
Reference in New Issue
Block a user