Added ISO-3166 country codes to languages table and lookup.

This commit is contained in:
Eevee 2009-11-23 21:50:45 -08:00
parent edcd424508
commit 0a706d44a3
3 changed files with 18 additions and 12 deletions

View file

@ -1,7 +1,7 @@
id,name id,iso3166,name
1,Japanese 1,jp,Japanese
2,Official Romaaji 2,jp,Official Romaaji
3,Korean 3,kr,Korean
4,Chinese 4,cn,Chinese
5,French 5,fr,French
6,German 6,de,German

1 id iso3166 name
2 1 jp Japanese
3 2 jp Official Romaaji
4 3 kr Korean
5 4 cn Chinese
6 5 fr French
7 6 de German

View file

@ -151,6 +151,7 @@ class Item(TableBase):
class Language(TableBase): class Language(TableBase):
__tablename__ = 'languages' __tablename__ = 'languages'
id = Column(Integer, primary_key=True, nullable=False) id = Column(Integer, primary_key=True, nullable=False)
iso3166 = Column(Unicode(2), nullable=False)
name = Column(Unicode(16), nullable=False) name = Column(Unicode(16), nullable=False)
class Location(TableBase): class Location(TableBase):

View file

@ -94,6 +94,7 @@ def open_index(directory=None, session=None, recreate=False):
table=whoosh.fields.ID(stored=True), table=whoosh.fields.ID(stored=True),
row_id=whoosh.fields.ID(stored=True), row_id=whoosh.fields.ID(stored=True),
language=whoosh.fields.STORED, language=whoosh.fields.STORED,
iso3166=whoosh.fields.STORED,
display_name=whoosh.fields.STORED, # non-lowercased name display_name=whoosh.fields.STORED, # non-lowercased name
forme_name=whoosh.fields.ID, forme_name=whoosh.fields.ID,
) )
@ -117,9 +118,10 @@ def open_index(directory=None, session=None, recreate=False):
row_id=unicode(row.id), row_id=unicode(row.id),
forme_name=u'XXX') forme_name=u'XXX')
def add(name, language, score): def add(name, language, iso3166, score):
writer.add_document(name=name.lower(), display_name=name, writer.add_document(name=name.lower(), display_name=name,
language=language, language=language,
iso3166=iso3166,
**row_key) **row_key)
speller_entries.append((name.lower(), score)) speller_entries.append((name.lower(), score))
@ -128,7 +130,7 @@ def open_index(directory=None, session=None, recreate=False):
row_key['forme_name'] = row.forme_name row_key['forme_name'] = row.forme_name
name = row.name name = row.name
add(name, None, 1) add(name, None, u'us', 1)
# Pokemon also get other languages # Pokemon also get other languages
for foreign_name in getattr(row, 'foreign_names', []): for foreign_name in getattr(row, 'foreign_names', []):
@ -138,12 +140,14 @@ def open_index(directory=None, session=None, recreate=False):
# no point and it makes spell results confusing # no point and it makes spell results confusing
continue continue
add(moonspeak, foreign_name.language.name, 3) add(moonspeak, foreign_name.language.name,
foreign_name.language.iso3166,
3)
# Add Roomaji too # Add Roomaji too
if foreign_name.language.name == 'Japanese': if foreign_name.language.name == 'Japanese':
roomaji = romanize(foreign_name.name) roomaji = romanize(foreign_name.name)
add(roomaji, u'Roomaji', 8) add(roomaji, u'Roomaji', u'jp', 8)
writer.commit() writer.commit()
@ -176,7 +180,7 @@ class LanguageWeighting(whoosh.scoring.Weighting):
rx_is_number = re.compile('^\d+$') rx_is_number = re.compile('^\d+$')
LookupResult = namedtuple('LookupResult', LookupResult = namedtuple('LookupResult',
['object', 'name', 'language', 'exact']) ['object', 'name', 'language', 'iso3166', 'exact'])
def _parse_table_name(name): def _parse_table_name(name):
"""Takes a singular table name, table name, or table object and returns the """Takes a singular table name, table name, or table object and returns the
@ -215,6 +219,7 @@ def _whoosh_records_to_results(records, session, exact=True):
results.append(LookupResult(object=obj, results.append(LookupResult(object=obj,
name=record['display_name'], name=record['display_name'],
language=record['language'], language=record['language'],
iso3166=record['iso3166'],
exact=exact)) exact=exact))
return results return results