add Databases and Positions menus

This commit is contained in:
Max Erenberg 2021-09-08 03:38:12 +00:00
parent df7148940a
commit 4aaf10b687
2 changed files with 43 additions and 23 deletions

View File

@ -30,6 +30,9 @@ class CeoFrame(Frame):
self._name = name self._name = name
self._loaded = False self._loaded = False
self._has_dynamic_layouts = has_dynamic_layouts self._has_dynamic_layouts = has_dynamic_layouts
# sanity check
if save_data:
assert name in model.viewdata
def _ceoframe_on_load(self): def _ceoframe_on_load(self):
# We usually don't want _on_load() to be called multiple times # We usually don't want _on_load() to be called multiple times

View File

@ -23,40 +23,40 @@ class WelcomeView(Frame):
('Change login shell', 'ChangeLoginShell'), ('Change login shell', 'ChangeLoginShell'),
('Set forwarding addresses', 'SetForwardingAddresses'), ('Set forwarding addresses', 'SetForwardingAddresses'),
] ]
members_menu = ListBox( members_menu = self._create_menu(
len(members_menu_items), members_menu_items, 'members', self._members_menu_select)
[
(desc, i) for i, (desc, view) in
enumerate(members_menu_items)
],
name='members',
label='Members',
on_select=self._members_menu_select,
)
groups_menu_items = [ groups_menu_items = [
('Add group', 'AddGroup'), ('Add group', 'AddGroup'),
('Get group members', 'GetGroup'), ('Get group members', 'GetGroup'),
('Add member to group', 'AddMemberToGroup'), ('Add member to group', 'AddMemberToGroup'),
('Remove member from group', 'RemoveMemberFromGroup'), ('Remove member from group', 'RemoveMemberFromGroup'),
] ]
groups_menu = ListBox( groups_menu = self._create_menu(groups_menu_items, 'groups')
len(groups_menu_items), db_menu_items = [
[ ('Create MySQL database', 'CreateMySQL'),
(desc, i) for i, (desc, view) in ('Reset MySQL password', 'ResetMySQLPassword'),
enumerate(groups_menu_items) ('Create PostgreSQL database', 'CreatePostgreSQL'),
], ('Reset PostgreSQL password', 'ResetPostgreSQLPassword'),
name='groups', ]
label='Groups', db_menu = self._create_menu(
on_select=functools.partial(self._generic_menu_select, 'groups'), 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 = { self._menu_groups = {
'members': members_menu_items, 'members': members_menu_items,
'groups': groups_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) self.add_layout(layout)
layout.add_widget(members_menu) layout.add_widget(members_menu, 1)
layout.add_widget(groups_menu) layout.add_widget(groups_menu, 1)
layout.add_widget(db_menu, 1)
layout.add_widget(positions_menu, 1)
layout = Layout([100]) layout = Layout([100])
self.add_layout(layout) self.add_layout(layout)
@ -68,6 +68,20 @@ class WelcomeView(Frame):
layout.add_widget(Button("Quit", self._quit), 2) layout.add_widget(Button("Quit", self._quit), 2)
self.fix() 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): def _get_menu_item_desc_view(self, menu_name: str):
self.save() self.save()
item_id = self.data[menu_name] item_id = self.data[menu_name]
@ -80,6 +94,9 @@ class WelcomeView(Frame):
self._model.is_club_rep = True self._model.is_club_rep = True
self._welcomeview_go_to_next_scene(desc, view) self._welcomeview_go_to_next_scene(desc, view)
def _db_menu_select(self):
pass
def _generic_menu_select(self, menu_name): def _generic_menu_select(self, menu_name):
desc, view = self._get_menu_item_desc_view('groups') desc, view = self._get_menu_item_desc_view('groups')
self._welcomeview_go_to_next_scene(desc, view) self._welcomeview_go_to_next_scene(desc, view)