示例#1
0
def resolve_params(obj, params, default=missing):
    """Given a dictionary of keyword arguments, return the same dictionary except with
    values enclosed in `< >` resolved to attributes on `obj`.
    """
    param_values = {}
    for name, attr_tpl in params.items():
        attr_name = tpl(str(attr_tpl))
        if attr_name:
            if attr_name == "slug":
                lang = get_language()
                attribute_value = get_value(obj, f"{attr_name}.{lang}")
                if not attribute_value:
                    attribute_value = get_value(obj,
                                                attr_name,
                                                default=default)
            else:
                attribute_value = get_value(obj, attr_name, default=default)
            if attribute_value is not missing:
                param_values[name] = attribute_value
            else:
                raise AttributeError(
                    '{attr_name!r} is not a valid '
                    'attribute of {obj!r}'.format(attr_name=attr_name,
                                                  obj=obj), )
        else:
            param_values[name] = attr_tpl
    return param_values
示例#2
0
def test_tpl(tag, val):
    assert utils.tpl(tag) == val