Source code for atlas_core.model_mixins

import sqlalchemy as sa
from sqlalchemy.ext.hybrid import hybrid_method


[docs]class IDMixin(object): """Adds in an autoincremented integer ID primary key.""" id = sa.Column(sa.Integer, primary_key=True, autoincrement=True) def __repr__(self): return "<{0}: {1}>".format(self.__class__.__name__, self.id)
class I18nMixinBase(object): @hybrid_method def get_localized(self, field, lang): """Look up the language localized version of a field by looking up field_lang.""" return getattr(self, field + "_" + lang) @staticmethod def create(fields, languages=["en"], class_name="I18nMixin"): localized_fields = {} for name, value in fields.items(): for language in languages: field_name = name + "_" + language localized_fields[field_name] = sa.Column(value) return type(class_name, (I18nMixinBase,), localized_fields)