"""A tiny Session subclass that adds support for a default language."""
_default_language_id = 9 # English. XXX magic constant
+ def __init__(self, *args, **kwargs):
+ try:
+ self.language_class = kwargs.pop('language_class')
+ except KeyError:
+ # Set the default language_class
+ # We need to import here, to prevent a circular depencency
+ from pokedex.db.tables import Language
+ self.language_class = Language
+ super(MultilangSession, self).__init__(*args, **kwargs)
+
@property
def default_language(self):
# Need to import tables here to avoid a circular dependency
from pokedex.db import tables
- query = self.query(tables.Language)
+ query = self.query(self.language_class)
query = query.filter_by(id=self._default_language_id)
return query.one()
# OK, create all the tables and gimme a session
Base.metadata.create_all()
- sm = sessionmaker(class_=MultilangSession)
+ sm = sessionmaker(class_=MultilangSession, language_class=Language)
sess = MultilangScopedSession(sm)
# Create some languages and foos to bind together
# Commit so the above get primary keys filled in
sess.commit()
- sess.default_language = lang_en.id
+ sess.default_language = lang_en
# Give our foo some names, as directly as possible
foo_text = FooText()