remove pymongo deprecated methods: find_and_modify & remove
This commit is contained in:
		| @@ -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,10 +1965,12 @@ 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}, |  | ||||||
|                                              update={'$inc': {'next': 1}}, |         counter = collection.find_one_and_update( | ||||||
|                                              new=True, |             filter={'_id': sequence_id}, | ||||||
|                                              upsert=True) |             update={'$inc': {'next': 1}}, | ||||||
|  |             return_document=ReturnDocument.AFTER, | ||||||
|  |             upsert=True) | ||||||
|         return self.value_decorator(counter['next']) |         return self.value_decorator(counter['next']) | ||||||
|  |  | ||||||
|     def set_next_value(self, value): |     def set_next_value(self, value): | ||||||
| @@ -1975,10 +1978,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( | ||||||
|                                              update={"$set": {"next": value}}, |             filter={"_id": sequence_id}, | ||||||
|                                              new=True, |             update={"$set": {"next": value}}, | ||||||
|                                              upsert=True) |             return_document=ReturnDocument.AFTER, | ||||||
|  |             upsert=True) | ||||||
|         return self.value_decorator(counter['next']) |         return self.value_decorator(counter['next']) | ||||||
|  |  | ||||||
|     def get_next_value(self): |     def get_next_value(self): | ||||||
|   | |||||||
| @@ -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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user