From 5bbf8564e20241e0bd9c28aca32dd519b6d19085 Mon Sep 17 00:00:00 2001 From: adieu Date: Fri, 26 Dec 2014 16:38:50 +0800 Subject: [PATCH 1/2] Add `keys` function to `Query`. --- gcloud/datastore/query.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcloud/datastore/query.py b/gcloud/datastore/query.py index 9ae6790daca8..e7611f11247b 100644 --- a/gcloud/datastore/query.py +++ b/gcloud/datastore/query.py @@ -516,6 +516,14 @@ def projection(self, projection=None): clone._pb.projection.add().property.name = projection_name return clone + def keys(self): + """Adds a projection to get keys only + + :rtype: :class:`Query` + :returns: A new Query instance only returns entity keys + """ + return self.projection(['__key__']) + def offset(self, offset=None): """Adds offset to the query to allow pagination. From 349af40e797b3ef728210daa715b1dbebe618f01 Mon Sep 17 00:00:00 2001 From: adieu Date: Wed, 31 Dec 2014 22:16:20 +0800 Subject: [PATCH 2/2] Add test for `Query.keys`. --- gcloud/datastore/test_query.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gcloud/datastore/test_query.py b/gcloud/datastore/test_query.py index e0b2f4702a5a..b952fdf7af0c 100644 --- a/gcloud/datastore/test_query.py +++ b/gcloud/datastore/test_query.py @@ -513,6 +513,15 @@ def test_projection_multiple_calls(self): after = before.projection(_PROJECTION2) self.assertEqual(after.projection(), _PROJECTION2) + def test_keys(self): + _KIND = 'KIND' + before = self._makeOne(_KIND) + after = before.keys() + projection_pb = list(after.to_protobuf().projection) + self.assertEqual(len(projection_pb), 1) + prop_pb = projection_pb[0] + self.assertEqual(prop_pb.property.name, '__key__') + def test_set_offset(self): _KIND = 'KIND' _OFFSET = 42