def refresh_entry_list(self, user): self.privs_list.clear_rows() for entry in user and user.entries or []: row = self.privs_list.add_row() self.privs_list.set_string(row, 0, entry.host) self.privs_list.set_string(row, 1, entry.db) plist = [PrivilegeInfo.get(p, " ")[0] for p in entry.privileges] plist.sort() self.privs_list.set_string(row, 2, ", ".join(plist) or "none")
def schema_priv_checked(self): privs = [] for name, cb in self.schema_rights_checks.iteritems(): if cb.get_active(): privs.append(name) sel = self.privs_list.get_selected() if sel >= 0: self._selected_user.entries[sel].privileges = set(privs) plist = [PrivilegeInfo.get(p, " ")[0] for p in privs] plist.sort() self.privs_list.set_string(sel, 2, ", ".join(plist) or "none") self.set_dirty()
def __init__(self, owner): mforms.Box.__init__(self, True) self.set_managed() self.owner = owner self._selected_user = None self._selected_user_original = None self.suspend_layout() self.set_spacing(8) self.set_padding(8) schema_list_box = newBox(False) schema_list_box.set_spacing(8) schema_list_box.set_size(150, -1) self.add(schema_list_box, False, True) #searchbox = TextEntry(SearchEntry) #schema_list_box.add(searchbox, False, True) self.user_list = newTreeView(mforms.TreeDefault) self.user_list.add_column(mforms.StringColumnType, "Users", 140, False) self.user_list.end_columns() self.user_list.add_changed_callback(self.user_selected) self.user_list.set_allow_sorting(True) schema_list_box.add(self.user_list, True, True) self.schema_rights_checks = {} self.content_box = priv_vbox = newBox(False) priv_vbox.set_spacing(8) self.add(priv_vbox, True, True) priv_vbox.add( newLabel( "Select a user and pick the privileges it has for a given Schema and Host combination." ), False, True) self.privs_list = newTreeView(mforms.TreeDefault) self.privs_list.add_column(mforms.StringColumnType, "Host", 100, True) self.privs_list.add_column(mforms.StringColumnType, "Schema", 100, True) self.privs_list.add_column(mforms.StringColumnType, "Privileges", 800, False) self.privs_list.end_columns() self.privs_list.add_changed_callback(self.schema_priv_selected) priv_vbox.add(self.privs_list, True, True) bbox = newBox(True) bbox.set_spacing(8) bbox.add( dLabel( "Schema and Host fields may use % and _ wildcards. The server will match specific entries before wildcarded ones." ), False, True) self.add_entry_button = newButton() self.add_entry_button.set_text("Add Entry...") bbox.add_end(self.add_entry_button, False, True) self.add_entry_button.add_clicked_callback(self.add_entry) self.del_entry_button = newButton() self.del_entry_button.set_text("Delete Entry") bbox.add_end(self.del_entry_button, False, True) self.del_entry_button.add_clicked_callback(self.del_entry) priv_vbox.add(bbox, False, True) self.schema_priv_label = newLabel("") priv_vbox.add(self.schema_priv_label, False, True) hbox = newBox(True) hbox.set_homogeneous(True) hbox.set_spacing(8) priv_vbox.add(hbox, False, True) self.schema_object_privs_panel = panel = newPanel( mforms.TitledBoxPanel) panel.set_title("Object Rights") box = newBox(False) box.set_padding(8) for name in SCHEMA_OBJECT_RIGHTS: cb = newCheckBox() label, desc = PrivilegeInfo.get(name, ("", None)) cb.set_text(label) if desc: cb.set_tooltip(desc) cb.add_clicked_callback(self.schema_priv_checked) box.add(cb, False, False) self.schema_rights_checks[name] = cb panel.add(box) hbox.add(panel, False, True) self.schema_ddl_privs_panel = panel = newPanel(mforms.TitledBoxPanel) panel.set_title("DDL Rights") box = newBox(False) box.set_padding(8) for name in SCHEMA_DDL_RIGHTS: cb = newCheckBox() label, desc = PrivilegeInfo.get(name, ("", None)) cb.set_text(label) if desc: cb.set_tooltip(desc) cb.add_clicked_callback(self.schema_priv_checked) box.add(cb, False, False) self.schema_rights_checks[name] = cb panel.add(box) hbox.add(panel, False, True) self.schema_other_privs_panel = panel = newPanel(mforms.TitledBoxPanel) panel.set_title("Other Rights") box = newBox(False) box.set_padding(8) for name in SCHEMA_OTHER_RIGHTS: cb = newCheckBox() label, desc = PrivilegeInfo.get(name, ("", None)) cb.set_text(label) if desc: cb.set_tooltip(desc) cb.add_clicked_callback(self.schema_priv_checked) box.add(cb, False, False) self.schema_rights_checks[name] = cb panel.add(box) hbox.add(panel, False, True) bottom_box = newBox(True) bottom_box.set_spacing(8) if 0: img = newImageBox() if App.get().get_resource_path("task_warning_mac.png"): img.set_image("task_warning_mac.png") else: img.set_image("task_warning.png") bottom_box.add(img, False, True) bottom_box.add( dLabel( "There are %i schema privilege entries for accounts that don't exist" ), False, True) purge = newButton() purge.set_text("Purge") bottom_box.add(purge, False, True) self.grant_all = newButton() self.grant_all.set_text('Select "ALL"') bottom_box.add(self.grant_all, False, True) self.grant_all.add_clicked_callback(self.grant_all_schema_privs) self.revoke_all = newButton() self.revoke_all.set_text("Unselect All") bottom_box.add(self.revoke_all, False, True) self.revoke_all.add_clicked_callback(self.revoke_all_schema_privs) self.save_button = newButton() self.save_button.set_text("Save Changes") bottom_box.add_end(self.save_button, False, True) self.save_button.add_clicked_callback(self.commit) self.revert_button = newButton() self.revert_button.set_text("Revert") bottom_box.add_end(self.revert_button, False, True) self.revert_button.add_clicked_callback(self.revert) priv_vbox.add(bottom_box, False, True) self.resume_layout()