Example #1
0
File: models.py Project: f3at/feat
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
Example #2
0
 def testFactoryRegistry(self):
     self.assertTrue(model.get_factory("test-model") is TestModel)
     self.assertTrue(model.get_factory(u"test-model") is TestModel)