defensive programming for v as an instance of DBRef when accessing v.collection in dereference

This commit is contained in:
Chuan-Heng Hsiao 2018-01-11 07:28:25 -05:00
parent da7d64667e
commit 919f221be9

View File

@ -237,7 +237,7 @@ class DeReference(object):
elif isinstance(v, (dict, list, tuple)) and depth <= self.max_depth: elif isinstance(v, (dict, list, tuple)) and depth <= self.max_depth:
item_name = '%s.%s' % (name, k) if name else name item_name = '%s.%s' % (name, k) if name else name
data[k] = self._attach_objects(v, depth - 1, instance=instance, name=item_name) data[k] = self._attach_objects(v, depth - 1, instance=instance, name=item_name)
elif hasattr(v, 'id'): elif isinstance(v, DBRef) and hasattr(v, 'id'):
data[k] = self.object_map.get((v.collection, v.id), v) data[k] = self.object_map.get((v.collection, v.id), v)
if instance and name: if instance and name: