TUI: add card management screen

pull/194/head
Hay1tsme 2024-12-20 17:40:55 -05:00
parent e93fcfd706
commit 0cf41ff389
1 changed files with 78 additions and 5 deletions

83
tui.py
View File

@ -190,19 +190,29 @@ class ManageUser(Frame):
layout.add_widget((Divider()))
usr_cards = []
#if state.selected_user.id != 0:
#cards = data.card.get_user_cards(state.selected_user.id)
#for card in cards:
#usr_cards.append(card._asdict())
if state.selected_user.id != 0:
cards = loop.run_until_complete(data.card.get_user_cards(state.selected_user.id))
for card in cards:
usr_cards.append(card._asdict())
if len(usr_cards) > 0:
layout3 = Layout([100], True)
self.add_layout(layout3)
card_status = "Available"
if card['is_locked'] and card['is_banned']:
card_status = "Locked and Banned"
if card['is_locked']:
card_status = "Locked"
if card['is_banned']:
card_status = "Banned"
layout3.add_widget(RadioButtons(
[(f"{card['id']}\t{card['access_code']}\t{card['status']}", card['id']) for card in usr_cards],
[(f"{card['id']} | {card['access_code']} | {card_status} | {card['memo'] if card['memo'] else '-'}", state.SelectedCard(card['id'], card['access_code'])) for card in usr_cards],
"Cards:",
"usr_cards"
))
layout3.add_widget(Button('Select Card', self._sel_card))
layout3.add_widget(Divider())
layout2 = Layout([1, 1, 1])
@ -214,6 +224,12 @@ class ManageUser(Frame):
self.fix()
def _sel_card(self):
self.save()
a = self.data.get('usr_cards')
state.set_card(a.id, a.access_code)
raise NextScene("Card Management")
def _create_user(self):
self.save()
raise NextScene("Create User")
@ -234,6 +250,62 @@ class ManageUser(Frame):
self.save()
raise NextScene("Main")
class ManageCard(Frame):
def __init__(self, screen: Screen):
super(ManageCard, self).__init__(
screen,
screen.height * 2 // 3,
screen.width * 2 // 3,
hover_focus=True,
can_scroll=False,
title="Card Management",
on_load=self._redraw
)
layout = Layout([3])
self.add_layout(layout)
layout.add_widget(Button("Create Card", self._create_card))
layout.add_widget(Button("Lookup Card", self._lookup))
def _redraw(self):
self._layouts = [self._layouts[0]]
layout = Layout([3])
self.add_layout(layout)
layout.add_widget(Button("Edit Card", self._edit_card, disabled=state.selected_card.id == 0 or state.selected_card.id is None))
layout.add_widget(Button("Reassign Card", self._edit_card, disabled=state.selected_card.id == 0 or state.selected_card.id is None))
layout.add_widget(Button("Delete Card", self._del_card, disabled=state.selected_card.id == 0 or state.selected_card.id is None))
layout.add_widget((Divider()))
layout2 = Layout([1, 1, 1])
self.add_layout(layout2)
a = Text("", f"status", readonly=True, disabled=True)
a.value = f"Selected Card: {state.selected_card}"
layout2.add_widget(a)
layout2.add_widget(Button("Back", self._back), 2)
self.fix()
def _create_card(self):
self.save()
raise NextScene("Create Card")
def _lookup(self):
self.save()
raise NextScene("Lookup Card")
def _edit_card(self):
self.save()
raise NextScene("Edit Card")
def _del_card(self):
self.save()
raise NextScene("Delete Card")
def _back(self):
self.save()
raise NextScene("Main")
class CreateUserView(Frame):
def __init__(self, screen: Screen):
super(CreateUserView, self).__init__(
@ -463,6 +535,7 @@ def demo(screen:Screen, scene: Scene):
Scene([CreateUserView(screen)], -1, name="Create User"),
Scene([LookupUserView(screen)], -1, name="Lookup User"),
Scene([SearchResultsView(screen)], -1, name="Search Results"),
Scene([ManageCard(screen)], -1, name="Card Management"),
]
screen.play(scenes, stop_on_resize=False, start_scene=scene, allow_int=True)