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