remove pymongo deprecated methods: find_and_modify & remove
This commit is contained in:
parent
e8dbd12f22
commit
8f57279dc7
@ -10,6 +10,7 @@ from operator import itemgetter
|
|||||||
from bson import Binary, DBRef, ObjectId, SON
|
from bson import Binary, DBRef, ObjectId, SON
|
||||||
import gridfs
|
import gridfs
|
||||||
import pymongo
|
import pymongo
|
||||||
|
from pymongo import ReturnDocument
|
||||||
import six
|
import six
|
||||||
from six import iteritems
|
from six import iteritems
|
||||||
|
|
||||||
@ -1964,9 +1965,11 @@ class SequenceField(BaseField):
|
|||||||
sequence_name = self.get_sequence_name()
|
sequence_name = self.get_sequence_name()
|
||||||
sequence_id = '%s.%s' % (sequence_name, self.name)
|
sequence_id = '%s.%s' % (sequence_name, self.name)
|
||||||
collection = get_db(alias=self.db_alias)[self.collection_name]
|
collection = get_db(alias=self.db_alias)[self.collection_name]
|
||||||
counter = collection.find_and_modify(query={'_id': sequence_id},
|
|
||||||
|
counter = collection.find_one_and_update(
|
||||||
|
filter={'_id': sequence_id},
|
||||||
update={'$inc': {'next': 1}},
|
update={'$inc': {'next': 1}},
|
||||||
new=True,
|
return_document=ReturnDocument.AFTER,
|
||||||
upsert=True)
|
upsert=True)
|
||||||
return self.value_decorator(counter['next'])
|
return self.value_decorator(counter['next'])
|
||||||
|
|
||||||
@ -1975,9 +1978,10 @@ class SequenceField(BaseField):
|
|||||||
sequence_name = self.get_sequence_name()
|
sequence_name = self.get_sequence_name()
|
||||||
sequence_id = "%s.%s" % (sequence_name, self.name)
|
sequence_id = "%s.%s" % (sequence_name, self.name)
|
||||||
collection = get_db(alias=self.db_alias)[self.collection_name]
|
collection = get_db(alias=self.db_alias)[self.collection_name]
|
||||||
counter = collection.find_and_modify(query={"_id": sequence_id},
|
counter = collection.find_one_and_update(
|
||||||
|
filter={"_id": sequence_id},
|
||||||
update={"$set": {"next": value}},
|
update={"$set": {"next": value}},
|
||||||
new=True,
|
return_document=ReturnDocument.AFTER,
|
||||||
upsert=True)
|
upsert=True)
|
||||||
return self.value_decorator(counter['next'])
|
return self.value_decorator(counter['next'])
|
||||||
|
|
||||||
|
@ -480,9 +480,10 @@ class BaseQuerySet(object):
|
|||||||
write_concern=write_concern,
|
write_concern=write_concern,
|
||||||
**{'pull_all__%s' % field_name: self})
|
**{'pull_all__%s' % field_name: self})
|
||||||
|
|
||||||
result = queryset._collection.remove(queryset._query, **write_concern)
|
with set_write_concern(queryset._collection, write_concern) as collection:
|
||||||
if result:
|
result = collection.delete_many(queryset._query)
|
||||||
return result.get('n')
|
if result.acknowledged:
|
||||||
|
return result.deleted_count
|
||||||
|
|
||||||
def update(self, upsert=False, multi=True, write_concern=None,
|
def update(self, upsert=False, multi=True, write_concern=None,
|
||||||
full_result=False, **update):
|
full_result=False, **update):
|
||||||
|
@ -1857,8 +1857,8 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
self.Person.objects()[:1].delete()
|
self.Person.objects()[:1].delete()
|
||||||
self.assertEqual(1, BlogPost.objects.count())
|
self.assertEqual(1, BlogPost.objects.count())
|
||||||
|
|
||||||
def test_limit_with_write_concern_0(self):
|
def test_delete_edge_case_with_write_concern_0_return_None(self):
|
||||||
|
"""Return None when write is unacknowledged"""
|
||||||
p1 = self.Person(name="User Z", age=20).save()
|
p1 = self.Person(name="User Z", age=20).save()
|
||||||
del_result = p1.delete(w=0)
|
del_result = p1.delete(w=0)
|
||||||
self.assertEqual(None, del_result)
|
self.assertEqual(None, del_result)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user