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
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()
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