edit show mwe

click-textual
Maveno 1 year ago
parent c963c2c675
commit 0cda6390cd

@ -56,13 +56,11 @@ class ShowDetailsScreen(Screen):
self.show_obj = show self.show_obj = show
def action_submit(self):
quit()
def on_mount(self): def on_mount(self):
if self.show_obj: if self.show_obj:
self.query_one("#id_input", Input).value = self.show_obj['id']
self.query_one("#id_wdg", Static).update(str(self.show_obj['id']))
self.query_one("#name_input", Input).value = self.show_obj['name'] self.query_one("#name_input", Input).value = self.show_obj['name']
self.query_one("#year_input", Input).value = self.show_obj['year'] self.query_one("#year_input", Input).value = self.show_obj['year']
@ -74,7 +72,12 @@ class ShowDetailsScreen(Screen):
yield Static("New Show" if self.show_obj else "Show", id="toplabel") yield Static("New Show" if self.show_obj else "Show", id="toplabel")
yield Static("ID") yield Static("ID")
yield Input(type="text", id="id_input")
if self.show_obj:
yield Static("", id="id_wdg")
else:
yield Input(type="text", id="id_wdg")
yield Static("Name") yield Static("Name")
yield Input(type="text", id="name_input") yield Input(type="text", id="name_input")
yield Static("Year") yield Static("Year")
@ -89,13 +92,16 @@ class ShowDetailsScreen(Screen):
yield Button("Save", id="save_button") yield Button("Save", id="save_button")
yield Button("Cancel", id="cancel_button") yield Button("Cancel", id="cancel_button")
yield Static("", id="output_static")
yield Footer() yield Footer()
def getValues(self): def getValues(self):
showId = int(self.query_one("#id_input", Input).value)
if self.show_obj:
showId = int(self.show_obj['id'])
else:
showId = int(self.query_one("#id_wdg", Input).value)
showName = self.query_one("#name_input", Input).value showName = self.query_one("#name_input", Input).value
showYear = self.query_one("#year_input", Input).value showYear = self.query_one("#year_input", Input).value
return showId, showName, showYear return showId, showName, showYear
@ -107,9 +113,8 @@ class ShowDetailsScreen(Screen):
if event.button.id == "save_button": if event.button.id == "save_button":
showId, showName, showYear = self.getValues() showId, showName, showYear = self.getValues()
self.query_one("#output_static", Static).update(f"{showId} - {showName} ({showYear})")
if self.addShow(showId, showName, showYear): if self.updateShow(showId, showName, showYear):
screenResult = {} screenResult = {}
screenResult['id'] = showId screenResult['id'] = showId
@ -124,7 +129,7 @@ class ShowDetailsScreen(Screen):
if event.button.id == "cancel_button": if event.button.id == "cancel_button":
self.app.pop_screen() self.app.pop_screen()
def addShow(self, show_id, show_name, show_year): def updateShow(self, show_id, show_name, show_year):
try: try:
s = self.Session() s = self.Session()
@ -138,10 +143,22 @@ class ShowDetailsScreen(Screen):
s.commit() s.commit()
return True return True
else: else:
return False
currentShow = q.first()
changed = False
if currentShow.name != show_name:
currentShow.name = show_name
changed = True
if currentShow.year != show_year:
currentShow.year = show_year
changed = True
if changed:
s.commit()
return changed
except Exception as ex: except Exception as ex:
click.ClickException(f"ShowDetailsScreen.addShow(): {repr(ex)}") click.ClickException(f"ShowDetailsScreen.updateShow(): {repr(ex)}")
finally: finally:
s.close() s.close()

@ -64,8 +64,6 @@ class ShowsScreen(Screen):
if row_key is not None: if row_key is not None:
selected_row_data = self.table.get_row(row_key) selected_row_data = self.table.get_row(row_key)
#)[selected_row_index]
selectedShow = {} selectedShow = {}
selectedShow['id'] = selected_row_data[0] selectedShow['id'] = selected_row_data[0]
selectedShow['name'] = selected_row_data[1] selectedShow['name'] = selected_row_data[1]
@ -75,9 +73,10 @@ class ShowsScreen(Screen):
def handle_edit_screen(self, screenResult): def handle_edit_screen(self, screenResult):
show = (screenResult['id'], screenResult['name'], screenResult['year']) row_key, col_key = self.table.coordinate_to_cell_key(self.table.cursor_coordinate)
self.table.add_row(*map(str, show))
self.table.update_cell(row_key, self.column_key_name, screenResult['name'])
self.table.update_cell(row_key, self.column_key_year, screenResult['year'])
def __init__(self): def __init__(self):
@ -114,9 +113,9 @@ class ShowsScreen(Screen):
self.table = DataTable() self.table = DataTable()
# Define the columns with headers # Define the columns with headers
self.table.add_column("ID", width=10) self.column_key_id = self.table.add_column("ID", width=10)
self.table.add_column("Name", width=50) self.column_key_name = self.table.add_column("Name", width=50)
self.table.add_column("Year", width=10) self.column_key_year = self.table.add_column("Year", width=10)
self.table.cursor_type = 'row' self.table.cursor_type = 'row'

Loading…
Cancel
Save