- class Strings(object):
- __tablename__ = tablename
- __singlename__ = singlename
-
- for name, plural, column in columns:
- column.name = name
-
- table = Table(tablename, metadata,
- Column(safe_name + '_id', Integer, ForeignKey(object_table.id),
+def makeTextTable(foreign_table_class, table_suffix_plural, table_suffix_singular, columns, lazy, Language=Language):
+ # With "Language", we'd have two language_id. So, rename one to 'lang'
+ foreign_key_name = foreign_table_class.__singlename__
+ if foreign_key_name == 'language':
+ foreign_key_name = 'lang'
+
+ table_name = foreign_table_class.__singlename__ + '_' + table_suffix_plural
+
+ class TranslatedStringsTable(object):
+ __tablename__ = table_name
+ _attrname = table_suffix_plural
+ _language_identifier = association_proxy('language', 'identifier')
+
+ for column_name, column_name_plural, column in columns:
+ column.name = column_name
+ if not column.nullable:
+ # A Python side default value, so that the strings can be set
+ # one by one without the DB complaining about missing values
+ column.default = ColumnDefault(u'')
+
+ table = Table(table_name, foreign_table_class.__table__.metadata,
+ Column(foreign_key_name + '_id', Integer, ForeignKey(foreign_table_class.id),