Added ISO-3166 country codes to languages table and lookup.
authorEevee <git@veekun.com>
Tue, 24 Nov 2009 05:50:45 +0000 (21:50 -0800)
committerEevee <git@veekun.com>
Tue, 24 Nov 2009 05:50:45 +0000 (21:50 -0800)
pokedex/data/csv/languages.csv
pokedex/db/tables.py
pokedex/lookup.py

index 42b5607..3f17c34 100644 (file)
@@ -1,7 +1,7 @@
-id,name
-1,Japanese
-2,Official Romaaji
-3,Korean
-4,Chinese
-5,French
-6,German
+id,iso3166,name
+1,jp,Japanese
+2,jp,Official Romaaji
+3,kr,Korean
+4,cn,Chinese
+5,fr,French
+6,de,German
index 653f5af..01cc6a0 100644 (file)
@@ -151,6 +151,7 @@ class Item(TableBase):
 class Language(TableBase):
     __tablename__ = 'languages'
     id = Column(Integer, primary_key=True, nullable=False)
+    iso3166 = Column(Unicode(2), nullable=False)
     name = Column(Unicode(16), nullable=False)
 
 class Location(TableBase):
index 28dd4b2..2565fcc 100644 (file)
@@ -94,6 +94,7 @@ def open_index(directory=None, session=None, recreate=False):
         table=whoosh.fields.ID(stored=True),
         row_id=whoosh.fields.ID(stored=True),
         language=whoosh.fields.STORED,
+        iso3166=whoosh.fields.STORED,
         display_name=whoosh.fields.STORED,  # non-lowercased name
         forme_name=whoosh.fields.ID,
     )
@@ -117,9 +118,10 @@ def open_index(directory=None, session=None, recreate=False):
                            row_id=unicode(row.id),
                            forme_name=u'XXX')
 
-            def add(name, language, score):
+            def add(name, language, iso3166, score):
                 writer.add_document(name=name.lower(), display_name=name,
                                     language=language,
+                                    iso3166=iso3166,
                                     **row_key)
                 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
 
             name = row.name
-            add(name, None, 1)
+            add(name, None, u'us', 1)
 
             # Pokemon also get other languages
             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
                     continue
 
-                add(moonspeak, foreign_name.language.name, 3)
+                add(moonspeak, foreign_name.language.name,
+                               foreign_name.language.iso3166,
+                               3)
 
                 # Add Roomaji too
                 if foreign_name.language.name == 'Japanese':
                     roomaji = romanize(foreign_name.name)
-                    add(roomaji, u'Roomaji', 8)
+                    add(roomaji, u'Roomaji', u'jp', 8)
 
     writer.commit()
 
@@ -176,7 +180,7 @@ class LanguageWeighting(whoosh.scoring.Weighting):
 rx_is_number = re.compile('^\d+$')
 
 LookupResult = namedtuple('LookupResult',
-                          ['object', 'name', 'language', 'exact'])
+                          ['object', 'name', 'language', 'iso3166', 'exact'])
 
 def _parse_table_name(name):
     """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,
                                     name=record['display_name'],
                                     language=record['language'],
+                                    iso3166=record['iso3166'],
                                     exact=exact))
 
     return results