示例#1
0
def render_compact_attribute(submodel, item, context):
    attr = IAttribute(submodel)
    if attr.value_info.value_type is ValueTypes.binary:
        if item.reference is not None:
            return item.reference.resolve(context)
    elif attr.is_readable:
        d = attr.fetch_value()
        d.addCallback(render_value, context)
        return d
示例#2
0
def render_attribute(model, context, result=None):
    if not IAttribute.providedBy(model):
        return result and result.wait()
    result = result or AsyncDict()
    subcontext = context.descend(model)
    attr = IAttribute(model)
    result.add("info", render_value_info(attr.value_info))
    result.add_if_true("readable", attr.is_readable)
    result.add_if_true("writable", attr.is_writable)
    result.add_if_true("deletable", attr.is_deletable)
    if attr.is_readable:
        if attr.value_info.value_type is not ValueTypes.binary:
            d = attr.fetch_value()
            d.addCallback(render_value, subcontext)
            result.add("value", d)
    return result.wait()
示例#3
0
def render_compact_model(model, context):
    if IAttribute.providedBy(model):
        attr = IAttribute(model)
        if attr.is_readable:
            d = attr.fetch_value()
            d.addCallback(render_value, context)
            return d
        return defer.succeed(None)
    if render_as_list(model):
        return render_model_as_list(model, context)

    result = AsyncDict()
    if model.reference:
        result.add_result("href", model.reference, "resolve", context)
    d = model.fetch_items()
    d.addCallback(render_compact_items, context, result)
    return d