diff --git a/tui.py b/tui.py index 39db651..b140964 100644 --- a/tui.py +++ b/tui.py @@ -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)