Skip to content

Commit 3753821

Browse files
committed
#295 let entity save accept null value for attribute
1 parent b6d3e74 commit 3753821

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

gcloud/datastore/helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ def _set_protobuf_value(value_pb, val):
222222
:class:`gcloud.datastore.entity.Entity`,
223223
:param val: The value to be assigned.
224224
"""
225+
if val is None:
226+
return
227+
225228
attr, val = _get_protobuf_attribute_and_value(val)
226229
if attr == 'key_value':
227230
value_pb.key_value.CopyFrom(val)

gcloud/datastore/test_helpers.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,20 @@ def test_key(self):
361361
value = pb.key_value
362362
self.assertEqual(value, key.to_protobuf())
363363

364+
def test_none(self):
365+
pb = self._makePB()
366+
self._callFUT(pb, None)
367+
self.assertEqual(pb.HasField('boolean_value'), False)
368+
self.assertEqual(pb.HasField('integer_value'), False)
369+
self.assertEqual(pb.HasField('double_value'), False)
370+
self.assertEqual(pb.HasField('timestamp_microseconds_value'), False)
371+
self.assertEqual(pb.HasField('key_value'), False)
372+
self.assertEqual(pb.HasField('blob_key_value'), False)
373+
self.assertEqual(pb.HasField('string_value'), False)
374+
self.assertEqual(pb.HasField('blob_value'), False)
375+
self.assertEqual(pb.HasField('entity_value'), False)
376+
self.assertEqual(len(pb.list_value), 0)
377+
364378
def test_bool(self):
365379
pb = self._makePB()
366380
self._callFUT(pb, False)

0 commit comments

Comments
 (0)