Esempio n. 1
0
    def get_result(self):
        if self.cache_result is not None:
            return self.cache_result
        if len(self.exception) >= 1:
            raise self.exception[0]

        resp = self.rpc.response
        keys = resp.key_list()
        entities = self._entities
        multiple = self.multiple
        tx = self.tx


        num_keys = len(keys)
        num_entities = len(entities)
        if num_keys != num_entities:
           raise datastore_errors.InternalError(
               'Put accepted %d entities but returned %d keys.' %
               (num_entities, num_keys))

        for entity, key in zip(entities, keys):
           entity._Entity__key._Key__reference.CopyFrom(key)

        if tx:
           tx.entity_group = entities[0].entity_group()

        if multiple:
           return [Key._FromPb(k) for k in keys]
        else:
           return Key._FromPb(resp.key(0))
Esempio n. 2
0
    def get_result(self):
        if self.cache_result is not None:
            return self.cache_result
        if len(self.exception) >= 1:
            raise self.exception[0]

        resp = self.rpc.response
        keys = resp.key_list()
        entities = self._entities
        multiple = self.multiple
        tx = self.tx

        num_keys = len(keys)
        num_entities = len(entities)
        if num_keys != num_entities:
            raise datastore_errors.InternalError(
                'Put accepted %d entities but returned %d keys.' %
                (num_entities, num_keys))

        for entity, key in zip(entities, keys):
            entity._Entity__key._Key__reference.CopyFrom(key)

        if tx:
            tx.entity_group = entities[0].entity_group()

        if multiple:
            return [Key._FromPb(k) for k in keys]
        else:
            return Key._FromPb(resp.key(0))
Esempio n. 3
0
    def finish(self):

        try:
            if self._keys_only:
                results = [Key._FromPb(e.key()) for e in self._buffer[:self._limit]]
            else:
                results = [Entity._FromPb(e) for e in self._buffer[:self._limit]]
                if self._model_class is not None:
                    from_entity = self._model_class.from_entity
                    results = [from_entity(e) for e in results]
                else:
                    results = [class_for_kind(e.kind()).from_entity(e) for e in results]
        finally:
            del self._buffer[:]

        if self.on_complete:
            results = self.on_complete(results)
        self.set_result(self._value, results)
Esempio n. 4
0
def process_query_result(result):
    if result.keys_only():
        return [Key._FromPb(e.key()) for e in result.result_list()]
    else:
        return [Entity._FromPb(e) for e in result.result_list()]