mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Make MultilangSession's language class configurable
This commit is contained in:
parent
9fdb8e1bd0
commit
4291c33c00
2 changed files with 13 additions and 3 deletions
|
@ -157,11 +157,21 @@ class MultilangSession(Session):
|
|||
"""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()
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ def test_i18n_table_creation():
|
|||
|
||||
# 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
|
||||
|
@ -82,7 +82,7 @@ def test_i18n_table_creation():
|
|||
|
||||
# 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()
|
||||
|
|
Loading…
Reference in a new issue