From 0fdea470a2e522bb319a7a9d85b22ea83f473348 Mon Sep 17 00:00:00 2001 From: Anatoly Bubenkov Date: Wed, 5 Mar 2014 02:56:10 +0100 Subject: [PATCH] --amend --- tests/test_i18n.py | 9 +++++++++ traduki/sqla.py | 9 +++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/test_i18n.py b/tests/test_i18n.py index 61676fd..a099a29 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -93,3 +93,12 @@ def test_i18n_field(query, model, session): assert model.title.get_dict() == {'en': 'En Title', 'pt': 'Pt Title'} assert model.title.get_text() == 'En Title' + + +def test_class_custom_table(languages): + """Test initialization with custom table.""" + Base = declarative_base() + + traduki.initialize(Base, languages, lambda: 'en', lambda: {}, attributes={'__tablename__': 'custom_table'}) + + assert traduki.sqla.Translation.__tablename__ == 'custom_table' diff --git a/traduki/sqla.py b/traduki/sqla.py index 5e2f2bc..a38573b 100644 --- a/traduki/sqla.py +++ b/traduki/sqla.py @@ -54,7 +54,7 @@ def __nonzero__(self): return bool(unicode(self)) -def initialize(base, languages, get_current_language_callback, get_language_chain_callback): +def initialize(base, languages, get_current_language_callback, get_language_chain_callback, attributes=None): """Initialize using given declarative base. :param base: SQLAlchemy declarative base class @@ -62,6 +62,8 @@ def initialize(base, languages, get_current_language_callback, get_language_chai :param get_current_language_callback: function which returns current language code :param get_language_chain_callback: function which returns language chain `dict` in format: {'': ''} + :param attributes: `dict` of future Translation class additional attributes or overrides. + For example: {'__tablename__': 'some_other_table' """ @@ -69,7 +71,10 @@ def initialize(base, languages, get_current_language_callback, get_language_chai config.LANGUAGE_CHAIN_CALLBACK = get_language_chain_callback config.LANGUAGES = languages - attributes = dict(((lang, Column(UnicodeText, nullable=True)) for lang in languages)) + if attributes is None: + attributes = {} + + attributes.update(dict(((lang, Column(UnicodeText, nullable=True)) for lang in languages))) global Translation