def set_(target, value, oldvalue, initiator): """ Wrap any value in ``TranslatableString``, except None and the empty string """ if not is_translatable_value(value): return value if isinstance(value, TaalTranslatableString): return TaalTranslatableString(value.context, value.message_id, value.pending_value) translatable = make_from_obj(target, initiator.key, value) return translatable
def set_(target, value, oldvalue, initiator): """ Wrap any value in ``TranslatableString``, except None and the empty string """ if not is_translatable_value(value): return value if isinstance(value, TaalTranslatableString): return TaalTranslatableString( value.context, value.message_id, value.pending_value) translatable = make_from_obj(target, initiator.key, value) return translatable
def refresh(target, args, attrs): mapper = inspect(target.__class__) if attrs is None: attrs = mapper.columns.keys() for column_name in attrs: if column_name not in mapper.columns: continue column = mapper.columns[column_name] if isinstance(column.type, TranslatableString): value = getattr(target, column.name) if is_translatable_value(value): translatable = make_from_obj(target, column.name, value) setattr(target, column.name, translatable) return target
def load(target, context): """ Wrap columns when loading data from the db """ mapper = inspect(target.__class__) for column in mapper.columns: if isinstance(column.type, TranslatableString): value = getattr(target, column.name) if not is_translatable_value(value): continue elif value is PlaceholderValue: translatable = make_from_obj(target, column.name, value) setattr(target, column.name, translatable) elif isinstance(value, TaalTranslatableString): continue # during session.merge else: raise TypeError("Unexpected column value '{}'".format(value))
def load(target, context): """ Wrap columns when loading data from the db """ mapper = inspect(target.__class__) for column in mapper.columns: if isinstance(column.type, TranslatableString): value = getattr(target, column.name) if not is_translatable_value(value): continue elif value is PlaceholderValue: translatable = make_from_obj(target, column.name, value) setattr(target, column.name, translatable) elif isinstance(value, TaalTranslatableString): continue # during session.merge else: raise TypeError("Unexpected column value '{}'".format( value))
def after_commit(session): """ Save any pending translations for this session """ for transaction, target, column, value in flush_log.pop(session, []): translator = get_translator(session) translatable = make_from_obj(target, column.name, value) if is_translatable_value(value): translator.save_translation(translatable, commit=True) else: # a non-translatable value in the commit log indicates a deletion translator.delete_translations(translatable) old_value = getattr(target, column.name) if is_translatable_value(old_value): # we may now have a primary key old_value.message_id = translatable.message_id # value is now saved. No need to keep around old_value.pending_value = None
def after_commit(session): """ Save any pending translations for this session """ for transaction, target, column, value in flush_log.pop(session, []): translator = get_translator(session) translatable = make_from_obj(target, column.name, value) if is_translatable_value(value): translator.save_translation(translatable, commit=True) else: # a non-translatable value in the commit log indicates a deletion translator.delete_translations(translatable) attr_name = get_attr_name(target, column) old_value = getattr(target, attr_name) if is_translatable_value(old_value): # we may now have a primary key old_value.message_id = translatable.message_id # value is now saved. No need to keep around old_value.pending_value = None
def test_make_from_obj_error(): instance = Model(name='name') with pytest.raises(TypeError): make_from_obj(instance, 'name', instance.name)