From 4291c33c007b0158458344f507f807633b90082e Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 4 Apr 2011 21:51:12 +0300 Subject: [PATCH] Make MultilangSession's language class configurable --- pokedex/db/multilang.py | 12 +++++++++++- pokedex/tests/test_schema.py | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pokedex/db/multilang.py b/pokedex/db/multilang.py index b5f87e4..6690b8a 100644 --- a/pokedex/db/multilang.py +++ b/pokedex/db/multilang.py @@ -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() diff --git a/pokedex/tests/test_schema.py b/pokedex/tests/test_schema.py index 2ad795c..bd42502 100644 --- a/pokedex/tests/test_schema.py +++ b/pokedex/tests/test_schema.py @@ -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()