Grouped all the hackery manipulations of the names in oracle.py, easily reversible too. Fixed dump to read from short named columns but dump in long named files. Load/dump now uses oracle.py to handle the name stuff.

This commit is contained in:
Epithumia 2013-12-19 15:46:31 +01:00
parent 6c0074b1a5
commit 00013f5ac0

View file

@ -11,6 +11,7 @@ import pokedex
from pokedex.db import metadata, tables, translations from pokedex.db import metadata, tables, translations
from pokedex.defaults import get_default_csv_dir from pokedex.defaults import get_default_csv_dir
from pokedex.db.dependencies import find_dependent_tables from pokedex.db.dependencies import find_dependent_tables
from pokedex.db.oracle import rewrite_long_table_names
def _get_table_names(metadata, patterns): def _get_table_names(metadata, patterns):
@ -142,17 +143,9 @@ def load(session, tables=[], directory=None, drop_tables=False, verbose=False, s
# flag for oracle stuff # flag for oracle stuff
oranames = (session.connection().dialect.name == 'oracle') oranames = (session.connection().dialect.name == 'oracle')
if oranames: if oranames:
# Prepare a dictionary to match old<->new names
oradict = {}
# Shorten table names, Oracle limits table and column names to 30 chars # Shorten table names, Oracle limits table and column names to 30 chars
for table in table_objs: # Make a dictionary to match old<->new names
table._orginal_name = table.name[:] oradict = rewrite_long_table_names()
oradict[table.name]=table._orginal_name
if len(table._orginal_name) > 30:
for letter in ['a', 'e', 'i', 'o', 'u', 'y']:
table.name=table.name.replace(letter,'')
oradict[table.name]=table._orginal_name
if recursive: if recursive:
table_objs.extend(find_dependent_tables(table_objs)) table_objs.extend(find_dependent_tables(table_objs))
@ -390,6 +383,11 @@ def dump(session, tables=[], directory=None, verbose=False, langs=['en']):
table_names = _get_table_names(metadata, tables) table_names = _get_table_names(metadata, tables)
table_names.sort() table_names.sort()
# Handle Oracle
oranames = (session.connection().dialect.name == 'oracle')
if oranames:
# Make a dictionary to match old<->new names
oradict = rewrite_long_table_names()
for table_name in table_names: for table_name in table_names:
print_start(table_name) print_start(table_name)
@ -397,6 +395,10 @@ def dump(session, tables=[], directory=None, verbose=False, langs=['en']):
writer = csv.writer(open("%s/%s.csv" % (directory, table_name), 'wb'), writer = csv.writer(open("%s/%s.csv" % (directory, table_name), 'wb'),
lineterminator='\n') lineterminator='\n')
# In oracle mode, use the original names instead of current
if oranames:
writer = csv.writer(open("%s/%s.csv" % (directory, oradict[table_name]), 'wb'),
lineterminator='\n')
columns = [col.name for col in table.columns] columns = [col.name for col in table.columns]
# For name tables, dump rows for official languages, as well as # For name tables, dump rows for official languages, as well as