Merge remote-tracking branch 'origin/encounters-i18n'
authorEevee <git@veekun.com>
Wed, 6 Apr 2011 05:32:51 +0000 (22:32 -0700)
committerEevee <git@veekun.com>
Wed, 6 Apr 2011 05:32:51 +0000 (22:32 -0700)
Conflicts:
pokedex/db/__init__.py

1  2 
pokedex/db/__init__.py
pokedex/db/markdown.py
pokedex/db/tables.py

@@@ -1,7 -1,10 +1,10 @@@
 -from sqlalchemy import MetaData, Table, engine_from_config, orm
+ # encoding: utf-8
+ import re
 +from sqlalchemy import engine_from_config, orm
  
  from ..defaults import get_default_db_uri
 -from .tables import metadata
 +from .tables import Language, metadata
  from .multilang import MultilangSession, MultilangScopedSession
  
  
@@@ -41,13 -44,37 +44,43 @@@ def connect(uri=None, session_args={}, 
  
      all_session_args = dict(autoflush=True, autocommit=False, bind=engine)
      all_session_args.update(session_args)
 -    sm = orm.sessionmaker(class_=MultilangSession, **all_session_args)
 +    sm = orm.sessionmaker(class_=MultilangSession, language_class=Language,
 +        **all_session_args)
      session = MultilangScopedSession(sm)
  
 +    # Default to English.  Warning, magic constant, blah blah.  Trying to fetch
 +    # English here would kinda break on new databases.  TODO still not an ideal
 +    # solution, I guess.
 +    session._default_language_id = 9
 +
      return session
+ def identifier_from_name(name):
+     """Make a string safe to use as an identifier.
+     Valid characters are lowercase alphanumerics and "-". This function may
+     raise ValueError if it can't come up with a suitable identifier.
+     This function is useful for scripts which add things with names.
+     """
+     if isinstance(name, str):
+         identifier = name.decode('utf-8')
+     else:
+         identifier = name
+     identifier = identifier.lower()
+     identifier = identifier.replace(u'+', u' plus ')
+     identifier = re.sub(u'[ _–]+', u'-', identifier)
+     identifier = re.sub(u"['./;’(),:]", u'', identifier)
+     identifier = identifier.replace(u'é', u'e')
+     identifier = identifier.replace(u'♀', u'-f')
+     identifier = identifier.replace(u'♂', u'-m')
+     if identifier in (u'???', u'????'):
+         identifier = u'unknown'
+     elif identifier == u'!':
+         identifier = u'exclamation'
+     elif identifier == u'?':
+         identifier = u'question'
+     if not identifier.replace(u"-", u"").isalnum():
+         raise ValueError(identifier)
+     return identifier
Simple merge
Simple merge