From 4aaf10b6877e006292a5f53af718a1153ff010c6 Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Wed, 8 Sep 2021 03:38:12 +0000 Subject: [PATCH] add Databases and Positions menus --- ceo/tui/CeoFrame.py | 3 ++ ceo/tui/WelcomeView.py | 63 +++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/ceo/tui/CeoFrame.py b/ceo/tui/CeoFrame.py index cd4086c..8084c62 100644 --- a/ceo/tui/CeoFrame.py +++ b/ceo/tui/CeoFrame.py @@ -30,6 +30,9 @@ class CeoFrame(Frame): self._name = name self._loaded = False self._has_dynamic_layouts = has_dynamic_layouts + # sanity check + if save_data: + assert name in model.viewdata def _ceoframe_on_load(self): # We usually don't want _on_load() to be called multiple times diff --git a/ceo/tui/WelcomeView.py b/ceo/tui/WelcomeView.py index 131f444..b4ff240 100644 --- a/ceo/tui/WelcomeView.py +++ b/ceo/tui/WelcomeView.py @@ -23,40 +23,40 @@ class WelcomeView(Frame): ('Change login shell', 'ChangeLoginShell'), ('Set forwarding addresses', 'SetForwardingAddresses'), ] - members_menu = ListBox( - len(members_menu_items), - [ - (desc, i) for i, (desc, view) in - enumerate(members_menu_items) - ], - name='members', - label='Members', - on_select=self._members_menu_select, - ) + members_menu = self._create_menu( + members_menu_items, 'members', self._members_menu_select) groups_menu_items = [ ('Add group', 'AddGroup'), ('Get group members', 'GetGroup'), ('Add member to group', 'AddMemberToGroup'), ('Remove member from group', 'RemoveMemberFromGroup'), ] - groups_menu = ListBox( - len(groups_menu_items), - [ - (desc, i) for i, (desc, view) in - enumerate(groups_menu_items) - ], - name='groups', - label='Groups', - on_select=functools.partial(self._generic_menu_select, 'groups'), - ) + groups_menu = self._create_menu(groups_menu_items, 'groups') + db_menu_items = [ + ('Create MySQL database', 'CreateMySQL'), + ('Reset MySQL password', 'ResetMySQLPassword'), + ('Create PostgreSQL database', 'CreatePostgreSQL'), + ('Reset PostgreSQL password', 'ResetPostgreSQLPassword'), + ] + db_menu = self._create_menu( + db_menu_items, 'databases', self._db_menu_select) + positions_menu_items = [ + ('Get positions', 'GetPositions'), + ('Set positions', 'SetPositions'), + ] + positions_menu = self._create_menu(positions_menu_items, 'positions') self._menu_groups = { 'members': members_menu_items, 'groups': groups_menu_items, + 'databases': db_menu_items, + 'positions': positions_menu_items, } - layout = Layout([100], fill_frame=True) + layout = Layout([1, 4, 1], fill_frame=True) self.add_layout(layout) - layout.add_widget(members_menu) - layout.add_widget(groups_menu) + layout.add_widget(members_menu, 1) + layout.add_widget(groups_menu, 1) + layout.add_widget(db_menu, 1) + layout.add_widget(positions_menu, 1) layout = Layout([100]) self.add_layout(layout) @@ -68,6 +68,20 @@ class WelcomeView(Frame): layout.add_widget(Button("Quit", self._quit), 2) self.fix() + def _create_menu(self, menu_items, name, on_select=None): + if on_select is None: + on_select = functools.partial(self._generic_menu_select, name) + return ListBox( + len(menu_items), + [ + (desc, i) for i, (desc, view) in + enumerate(menu_items) + ], + name=name, + label=name.capitalize(), + on_select=on_select, + ) + def _get_menu_item_desc_view(self, menu_name: str): self.save() item_id = self.data[menu_name] @@ -80,6 +94,9 @@ class WelcomeView(Frame): self._model.is_club_rep = True self._welcomeview_go_to_next_scene(desc, view) + def _db_menu_select(self): + pass + def _generic_menu_select(self, menu_name): desc, view = self._get_menu_item_desc_view('groups') self._welcomeview_go_to_next_scene(desc, view)