class BaseRelationalBrowser(ListNoteBook, HasDialogs): def __init__(self, conn, maintable, pkey): self.menu = make_menu(['insert', 'update', 'done'], self.pkey_command) ListNoteBook.__init__(self) self.conn = conn self.main = StatementCursor(self.conn) self.main.set_table(maintable) self.pkey = pkey self.dialogs = {}.fromkeys(['insert', 'update', 'delete']) self.relations = {} def reset_rows(self): self.set_rows(self.main.select(order=self.pkey)) self.set_row_select(self.pkey_selected) def pkey_selected(self, listbox, row, column, event): print listbox.get_selected_data()[0][0] def pkey_command(self, menuitem, command): if command == 'insert': if self.dialogs['insert'] is None: dialog = dialogs.Entry('insert a %s' % self.pkey, name='insert') dialog.set_ok(self.pkey_insert_ok) dialog.set_cancel(self.destroy_dialog) self.dialogs['insert'] = dialog elif command == 'update': dialogs.Message('need to set update to cascade in db') elif command == 'done': value = None try: value = self.listbox.get_selected_data()[0][0] except IndexError: dialogs.Message('need to select %s first' % self.pkey) if value is not None: dialogs.Message('ok, i am done.') def append_relation(self, table, fields=[], fkeyname=None): if table not in self.relations: if not fields: if fkeyname is None: fkeyname = self.pkey fields = [f for f in self.main.fields(table) if f != fkeyname] if fkeyname is None: fkeyname = self.pkey self.relations[table] = fkeyname, fields else: raise Error, "relation already exists %s" % table
class BaseRelationalBrowser(ListNoteBook, HasDialogs): def __init__(self, conn, maintable, pkey): self.menu = make_menu(["insert", "update", "done"], self.pkey_command) ListNoteBook.__init__(self) self.conn = conn self.main = StatementCursor(self.conn) self.main.set_table(maintable) self.pkey = pkey self.dialogs = {}.fromkeys(["insert", "update", "delete"]) self.relations = {} def reset_rows(self): self.set_rows(self.main.select(order=self.pkey)) self.set_row_select(self.pkey_selected) def pkey_selected(self, listbox, row, column, event): print listbox.get_selected_data()[0][0] def pkey_command(self, menuitem, command): if command == "insert": if self.dialogs["insert"] is None: dialog = dialogs.Entry("insert a %s" % self.pkey, name="insert") dialog.set_ok(self.pkey_insert_ok) dialog.set_cancel(self.destroy_dialog) self.dialogs["insert"] = dialog elif command == "update": dialogs.Message("need to set update to cascade in db") elif command == "done": value = None try: value = self.listbox.get_selected_data()[0][0] except IndexError: dialogs.Message("need to select %s first" % self.pkey) if value is not None: dialogs.Message("ok, i am done.") def append_relation(self, table, fields=[], fkeyname=None): if table not in self.relations: if not fields: if fkeyname is None: fkeyname = self.pkey fields = [f for f in self.main.fields(table) if f != fkeyname] if fkeyname is None: fkeyname = self.pkey self.relations[table] = fkeyname, fields else: raise Error, "relation already exists %s" % table