cleaner Document._save_update
This commit is contained in:
parent
d05301b3a1
commit
a8889b6dfb
@ -433,16 +433,8 @@ class Document(BaseDocument):
|
|||||||
val = val[ak]
|
val = val[ak]
|
||||||
select_dict['.'.join(actual_key)] = val
|
select_dict['.'.join(actual_key)] = val
|
||||||
|
|
||||||
def _is_new_object(last_error):
|
|
||||||
if last_error is not None:
|
|
||||||
updated = last_error.get('updatedExisting')
|
|
||||||
if updated is not None:
|
|
||||||
return not updated
|
|
||||||
return created
|
|
||||||
|
|
||||||
update_query = {}
|
|
||||||
|
|
||||||
updates, removals = self._delta()
|
updates, removals = self._delta()
|
||||||
|
update_query = {}
|
||||||
if updates:
|
if updates:
|
||||||
update_query['$set'] = updates
|
update_query['$set'] = updates
|
||||||
if removals:
|
if removals:
|
||||||
@ -454,7 +446,13 @@ class Document(BaseDocument):
|
|||||||
if not upsert and last_error['n'] == 0:
|
if not upsert and last_error['n'] == 0:
|
||||||
raise SaveConditionError('Race condition preventing'
|
raise SaveConditionError('Race condition preventing'
|
||||||
' document update detected')
|
' document update detected')
|
||||||
created = _is_new_object(last_error)
|
if last_error is not None:
|
||||||
|
updated_existing = last_error.get('updatedExisting')
|
||||||
|
if updated_existing is False:
|
||||||
|
created = True
|
||||||
|
# !!! This is bad, means we accidentally created a new,
|
||||||
|
# potentially corrupted document. See
|
||||||
|
# https://github.com/MongoEngine/mongoengine/issues/564
|
||||||
|
|
||||||
return object_id, created
|
return object_id, created
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user