def test_find_dependent_tables(self): """ Test bauble.utils.find_dependent_tables """ metadata = MetaData() metadata.bind = db.engine # table1 does't depend on any tables table1 = Table('table1', metadata, Column('id', Integer, primary_key=True)) # table2 depends on table1 table2 = Table('table2', metadata, Column('id', Integer, primary_key=True), Column('table1', Integer, ForeignKey('table1.id'))) # table3 depends on table2 table3 = Table('table3', metadata, Column('id', Integer, primary_key=True), Column('table2', Integer, ForeignKey('table2.id')), Column('table4', Integer, ForeignKey('table4.id')) ) # table4 depends on table2 table4 = Table('table4', metadata, Column('id', Integer, primary_key=True), Column('table2', Integer, ForeignKey('table2.id'))) # tables that depend on table 1 are 3, 4, 2 depends = list(utils.find_dependent_tables(table1, metadata)) print 'table1: %s' % [table.name for table in depends] self.assert_(list(depends) == [table2, table4, table3]) # tables that depend on table 2 are 3, 4 depends = list(utils.find_dependent_tables(table2, metadata)) print 'table2: %s' % [table.name for table in depends] self.assert_(depends == [table4, table3]) # no tables depend on table 3 depends = list(utils.find_dependent_tables(table3, metadata)) print 'table3: %s' % [table.name for table in depends] self.assert_(depends == []) # table that depend on table 4 are 3 depends = list(utils.find_dependent_tables(table4, metadata)) print 'table4: %s' % [table.name for table in depends] self.assert_(depends == [table3])
def test_find_dependent_tables(self): """ Test bauble.utils.find_dependent_tables """ metadata = MetaData() metadata.bind = db.engine # table1 does't depend on any tables table1 = Table('table1', metadata, Column('id', Integer, primary_key=True)) # table2 depends on table1 table2 = Table('table2', metadata, Column('id', Integer, primary_key=True), Column('table1', Integer, ForeignKey('table1.id'))) # table3 depends on table2 table3 = Table('table3', metadata, Column('id', Integer, primary_key=True), Column('table2', Integer, ForeignKey('table2.id')), Column('table4', Integer, ForeignKey('table4.id'))) # table4 depends on table2 table4 = Table('table4', metadata, Column('id', Integer, primary_key=True), Column('table2', Integer, ForeignKey('table2.id'))) # tables that depend on table 1 are 3, 4, 2 depends = list(utils.find_dependent_tables(table1, metadata)) print 'table1: %s' % [table.name for table in depends] self.assert_(list(depends) == [table2, table4, table3]) # tables that depend on table 2 are 3, 4 depends = list(utils.find_dependent_tables(table2, metadata)) print 'table2: %s' % [table.name for table in depends] self.assert_(depends == [table4, table3]) # no tables depend on table 3 depends = list(utils.find_dependent_tables(table3, metadata)) print 'table3: %s' % [table.name for table in depends] self.assert_(depends == []) # table that depend on table 4 are 3 depends = list(utils.find_dependent_tables(table4, metadata)) print 'table4: %s' % [table.name for table in depends] self.assert_(depends == [table3])
def create_table(table): table.create(bind=connection) if table.name not in created_tables: created_tables.append(table.name) # created_tables.extend([n for n in names \ # if n not in created_tables]) steps_so_far = 0 cleaned = None insert = None depends = set() # the type will be changed to a [] later try: # get all the dependencies for table, filename in sorted_tables: #debug(table.name) d = utils.find_dependent_tables(table) depends.update(list(d)) # drop all of the dependencies together if len(depends) > 0: if not force: msg = _('In order to import the files the following '\ 'tables will need to be dropped:' \ '\n\n<b>%s</b>\n\n' \ 'Would you like to continue?' \ % ', '.join(sorted([d.name for d in depends]))) response = utils.yes_no_dialog(msg) else: response = True if response and len(depends)>0:
created_tables = [] def create_table(table): table.create(bind=connection) if table.name not in created_tables: created_tables.append(table.name) steps_so_far = 0 cleaned = None insert = None depends = set() # the type will be changed to a [] later try: ## get all the dependencies for table, filename in sorted_tables: logger.debug(table.name) d = utils.find_dependent_tables(table) depends.update(list(d)) del d ## drop all of the dependencies together if len(depends) > 0: if not force: msg = _('In order to import the files the following ' 'tables will need to be dropped:' '\n\n<b>%s</b>\n\n' 'Would you like to continue?' % ', '.join(sorted([d.name for d in depends]))) response = utils.yes_no_dialog(msg) else: response = True