Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
def test_make_from_obj_error():
    instance = Model(name='name')
    with pytest.raises(TypeError):
        make_from_obj(instance, 'name', instance.name)
Exemplo n.º 10
0
def test_make_from_obj_error():
    instance = Model(name='name')
    with pytest.raises(TypeError):
        make_from_obj(instance, 'name', instance.name)