adding support for setting a query's batch object to None

This commit is contained in:
Blake Eggleston
2013-06-27 13:10:16 -07:00
parent ed0bb79896
commit f90cfb046a
2 changed files with 32 additions and 13 deletions

View File

@@ -428,8 +428,8 @@ class AbstractQuerySet(object):
:param batch_obj: :param batch_obj:
:return: :return:
""" """
if not isinstance(batch_obj, BatchQuery): if batch_obj is not None and not isinstance(batch_obj, BatchQuery):
raise CQLEngineException('batch_obj must be a BatchQuery instance') raise CQLEngineException('batch_obj must be a BatchQuery instance or None')
clone = copy.deepcopy(self) clone = copy.deepcopy(self)
clone._batch = batch_obj clone._batch = batch_obj
return clone return clone
@@ -772,13 +772,13 @@ class DMLQuery(object):
self.model = model self.model = model
self.column_family_name = self.model.column_family_name() self.column_family_name = self.model.column_family_name()
self.instance = instance self.instance = instance
self.batch = batch self._batch = batch
pass pass
def batch(self, batch_obj): def batch(self, batch_obj):
if not isinstance(batch_obj, BatchQuery): if batch_obj is not None and not isinstance(batch_obj, BatchQuery):
raise CQLEngineException('batch_obj must be a BatchQuery instance') raise CQLEngineException('batch_obj must be a BatchQuery instance or None')
self.batch = batch_obj self._batch = batch_obj
return self return self
def save(self): def save(self):
@@ -852,8 +852,8 @@ class DMLQuery(object):
# skip query execution if it's empty # skip query execution if it's empty
# caused by pointless update queries # caused by pointless update queries
if qs: if qs:
if self.batch: if self._batch:
self.batch.add_query(qs, query_values) self._batch.add_query(qs, query_values)
else: else:
execute(qs, query_values) execute(qs, query_values)
@@ -885,8 +885,8 @@ class DMLQuery(object):
qs = ' '.join(qs) qs = ' '.join(qs)
if self.batch: if self._batch:
self.batch.add_query(qs, query_values) self._batch.add_query(qs, query_values)
else: else:
execute(qs, query_values) execute(qs, query_values)
@@ -906,8 +906,8 @@ class DMLQuery(object):
qs += [' AND '.join(where_statements)] qs += [' AND '.join(where_statements)]
qs = ' '.join(qs) qs = ' '.join(qs)
if self.batch: if self._batch:
self.batch.add_query(qs, field_values) self._batch.add_query(qs, field_values)
else: else:
execute(qs, field_values) execute(qs, field_values)

View File

@@ -4,7 +4,7 @@ from uuid import uuid4
import random import random
from cqlengine import Model, columns from cqlengine import Model, columns
from cqlengine.management import delete_table, create_table from cqlengine.management import delete_table, create_table
from cqlengine.query import BatchQuery from cqlengine.query import BatchQuery, DMLQuery
from cqlengine.tests.base import BaseCassEngTestCase from cqlengine.tests.base import BaseCassEngTestCase
class TestMultiKeyModel(Model): class TestMultiKeyModel(Model):
@@ -104,3 +104,22 @@ class BatchQueryTests(BaseCassEngTestCase):
for m in TestMultiKeyModel.all(): for m in TestMultiKeyModel.all():
m.delete() m.delete()
def test_none_success_case(self):
""" Tests that passing None into the batch call clears any batch object """
b = BatchQuery()
q = TestMultiKeyModel.objects.batch(b)
assert q._batch == b
q = q.batch(None)
assert q._batch is None
def test_dml_none_success_case(self):
""" Tests that passing None into the batch call clears any batch object """
b = BatchQuery()
q = DMLQuery(TestMultiKeyModel, batch=b)
assert q._batch == b
q.batch(None)
assert q._batch is None