def write_query_result(doc, obj, *args, **kwargs): # This type of object is used as a result of 'select' query of dbmodels api result = list() if IModel.implementedBy(obj._item_model): model_factory = obj._item_model else: model_factory = model.get_factory(obj._item_model) if model_factory is None: # use the adapter model_factory = IModel items = obj.get_items() for child in items: if obj.query_target == 'view': instance = model_factory(obj.source) d = instance.initiate(view=child) else: instance = model_factory(child) d = instance.initiate(view=obj.view) d.addCallback(applicationjson.render_inline_model, *args, **kwargs) result.append(d) r = applicationjson.AsyncDict() d = defer.DeferredList(result) d.addCallback(applicationjson.unpack_deferred_list_result) d.addCallback(list) r.add('rows', d) r.add('total_count', items.total_count) r.add('aggregations', items.aggregations) d = r.wait() d.addCallback(applicationjson.render_json, doc) d.addCallback(defer.override_result, None) return d
def testFactoryRegistry(self): self.assertTrue(model.get_factory("test-model") is TestModel) self.assertTrue(model.get_factory(u"test-model") is TestModel)