Skip to content

Commit 204b17a

Browse files
committed
Merge pull request #213 from knowsis/safe-writes
Safe writes
2 parents 6781ea3 + ad1f329 commit 204b17a

File tree

8 files changed

+37
-24
lines changed

8 files changed

+37
-24
lines changed

django_mongodb_engine/base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@ def sql_flush(self, style, tables, sequence_list, allow_cascade=False):
6464
if table.startswith('system.'):
6565
# Do not try to drop system collections.
6666
continue
67-
self.connection.database[table].remove()
67+
68+
collection = self.connection.database[table]
69+
options = collection.options()
70+
71+
if not options.get('capped', False):
72+
collection.remove({})
73+
6874
return []
6975

7076
def validate_autopk_value(self, value):
@@ -248,12 +254,8 @@ def pop(name, default=None):
248254
conn_options = dict(
249255
host=host,
250256
port=int(port),
251-
max_pool_size=None,
252257
document_class=dict,
253-
tz_aware=False,
254-
_connect=True,
255-
auto_start_request=True,
256-
safe=False
258+
tz_aware=False
257259
)
258260
conn_options.update(options)
259261

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pymongo
1+
pymongo<3.0
22
https://github.com/django-nonrel/djangotoolbox/tarball/master
33
https://github.com/django-nonrel/django/tarball/nonrel-1.5
44
https://github.com/django-nonrel/django-dbindexer/tarball/master

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
license='2-clause BSD',
1818
description=DESCRIPTION,
1919
long_description=LONG_DESCRIPTION,
20-
install_requires=['pymongo', 'djangotoolbox>=1.6.0'],
20+
install_requires=['pymongo<3.0', 'djangotoolbox>=1.6.0'],
2121
packages=find_packages(exclude=['tests', 'tests.*']),
2222
zip_safe=False,
2323
classifiers=[

tests/contrib/tests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ def test_map_reduce_with_custom_primary_key(self, inline=False):
121121
class RawQueryTests(TestCase):
122122

123123
def setUp(self):
124+
MapReduceModel.objects.all().delete()
125+
124126
for i in xrange(10):
125127
MapReduceModel.objects.create(n=i, m=i * 2)
126128

tests/lookup/tests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ class LookupTests(TestCase):
1919

2020
def setUp(self):
2121
# Create a few Authors.
22+
Author.objects.all().delete()
23+
Article.objects.all().delete()
24+
Tag.objects.all().delete()
25+
2226
self.au1 = Author(name='Author 1')
2327
self.au1.save()
2428
self.au2 = Author(name='Author 2')

tests/mongodb/tests.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -248,32 +248,25 @@ def test_setup(flags, **method_kwargs):
248248
self.assertEqual(method_kwargs[name],
249249
Collection._method_kwargs[name])
250250

251-
if Collection._method_kwargs['update'].get('safe'):
252-
self.assertEqual(*update_count)
251+
252+
self.assertEqual(*update_count)
253253

254254
test_setup({}, save={}, update={'multi': True}, remove={})
255+
test_setup({},
256+
save={},
257+
update={'multi': True},
258+
remove={})
255259
test_setup({
256-
'safe': True},
257-
save={'safe': True},
258-
update={'safe': True, 'multi': True},
259-
remove={'safe': True})
260-
test_setup({
261-
'delete': {'safe': True}, 'update': {}},
260+
'delete': {}, 'update': {}},
262261
save={},
263262
update={'multi': True},
264-
remove={'safe': True})
263+
remove={})
265264
test_setup({
266265
'insert': {'fsync': True}, 'delete': {'fsync': True}},
267266
save={},
268267
update={'multi': True},
269268
remove={'fsync': True})
270269

271-
def test_unique(self):
272-
with self.custom_database_wrapper({'OPTIONS': {}}):
273-
Post.objects.create(title='a', content='x')
274-
Post.objects.create(title='a', content='y')
275-
self.assertEqual(Post.objects.count(), 1)
276-
self.assertEqual(Post.objects.get().content, 'x')
277270

278271
def test_unique_safe(self):
279272
Post.objects.create(title='a')

tests/query/tests.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
class BasicQueryTests(TestCase):
1717
"""Backend-agnostic query tests."""
1818

19+
def tearDown(self):
20+
Blog.objects.all().delete()
21+
Post.objects.all().delete()
22+
IntegerModel.objects.all().delete()
23+
1924
def test_add_and_delete_blog(self):
2025
Blog.objects.create(title='blog1')
2126
self.assertEqual(Blog.objects.count(), 1)
@@ -430,6 +435,9 @@ class OrLookupsTests(TestCase):
430435
"""Stolen from the Django test suite, shaked down for m2m tests."""
431436

432437
def setUp(self):
438+
439+
Article.objects.all().delete()
440+
433441
self.a1 = Article.objects.create(
434442
headline='Hello', pub_date=datetime.datetime(2005, 11, 27)).pk
435443
self.a2 = Article.objects.create(
@@ -438,6 +446,9 @@ def setUp(self):
438446
headline='Hello and goodbye',
439447
pub_date=datetime.datetime(2005, 11, 29)).pk
440448

449+
def tearDown(self):
450+
Article.objects.all().delete()
451+
441452
def test_filter_or(self):
442453
self.assertQuerysetEqual(
443454
Article.objects.filter(headline__startswith='Hello') |
@@ -572,6 +583,7 @@ def test_q_and(self):
572583
[])
573584

574585
def test_q_exclude(self):
586+
575587
self.assertQuerysetEqual(
576588
Article.objects.exclude(Q(headline__startswith='Hello')),
577589
['Goodbye'],

tests/settings/settings_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'default': {
33
'ENGINE': 'django_mongodb_engine',
44
'NAME': 'test',
5-
'OPTIONS': {'OPERATIONS': {'safe': True}},
5+
'OPTIONS': {'OPERATIONS':{}},
66
},
77
'other': {
88
'ENGINE': 'django_mongodb_engine',

0 commit comments

Comments
 (0)