Skip to content

Commit df8a6ba

Browse files
get_airtable_column_map
1 parent 0e58b16 commit df8a6ba

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

seatable_api/convert_airtable.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,9 @@ def __init__(self, airtable_api_key, airtable_base_id, base, table_names, links=
459459
self.get_link_map()
460460

461461
def convert_metadata(self):
462-
self.convert_tables()
463462
self.get_airtable_row_map(is_demo=True)
463+
self.get_airtable_column_map()
464+
self.convert_tables()
464465
self.convert_columns()
465466
self.convert_rows(is_demo=True)
466467
self.convert_links(is_demo=True)
@@ -478,20 +479,29 @@ def convert_tables(self):
478479
for table_name in self.table_names:
479480
table = self.table_map.get(table_name)
480481
if not table:
481-
self.add_table(table_name)
482-
print('[Info] Added table [ %s ]' % table_name)
482+
airtable_columns = self.airtable_column_map[table_name]
483+
columns = []
484+
for column in airtable_columns:
485+
if column['type'] == ColumnTypes.LINK:
486+
continue
487+
item = {
488+
'column_name': column['name'],
489+
'column_type': column['type'].value,
490+
'column_data': column['data'],
491+
}
492+
columns.append(item)
493+
self.add_table(table_name, columns)
494+
print('[Info] Added table [ %s ] with %s columns' % (table_name, len(columns)))
483495
print('[Info] Success\n')
484496
time.sleep(1)
485497

486498
def convert_columns(self):
487499
print('[Info] Convert columns')
488500
self.get_table_map()
489501
for table_name in self.table_names:
490-
airtable_rows = self.airtable_row_map[table_name]
491-
columns = self.columns_parser.parse(
492-
self.link_map, table_name, airtable_rows)
502+
airtable_columns = self.airtable_column_map[table_name]
493503
table = self.table_map.get(table_name)
494-
for column in columns:
504+
for column in airtable_columns:
495505
column_name = column['name']
496506
exists_column = table.get(column_name)
497507
if not exists_column:
@@ -583,6 +593,14 @@ def get_airtable_row_map(self, is_demo=False):
583593
print('[Info] Success\n')
584594
return self.airtable_row_map
585595

596+
def get_airtable_column_map(self):
597+
self.airtable_column_map = {}
598+
for table_name in self.table_names:
599+
airtable_rows = self.airtable_row_map[table_name]
600+
columns = self.columns_parser.parse(
601+
self.link_map, table_name, airtable_rows)
602+
self.airtable_column_map[table_name] = columns
603+
586604
def get_table_map(self):
587605
self.table_map = {}
588606
self.column_map = {}

0 commit comments

Comments
 (0)