not allowing non-models to be passed to sync_table
This commit is contained in:
@@ -12,7 +12,7 @@ from collections import namedtuple
|
|||||||
Field = namedtuple('Field', ['name', 'type'])
|
Field = namedtuple('Field', ['name', 'type'])
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
from cqlengine.models import Model
|
||||||
|
|
||||||
# system keyspaces
|
# system keyspaces
|
||||||
schema_columnfamilies = NamedTable('system', 'schema_columnfamilies')
|
schema_columnfamilies = NamedTable('system', 'schema_columnfamilies')
|
||||||
@@ -74,9 +74,13 @@ def sync_table(model, create_missing_keyspace=True):
|
|||||||
:type create_missing_keyspace: bool
|
:type create_missing_keyspace: bool
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if not issubclass(model, Model):
|
||||||
|
raise CQLEngineException("Models must be derived from base Model.")
|
||||||
|
|
||||||
if model.__abstract__:
|
if model.__abstract__:
|
||||||
raise CQLEngineException("cannot create table from abstract model")
|
raise CQLEngineException("cannot create table from abstract model")
|
||||||
|
|
||||||
|
|
||||||
#construct query string
|
#construct query string
|
||||||
cf_name = model.column_family_name()
|
cf_name = model.column_family_name()
|
||||||
raw_cf_name = model.column_family_name(include_keyspace=False)
|
raw_cf_name = model.column_family_name(include_keyspace=False)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
|
from cqlengine.exceptions import CQLEngineException
|
||||||
from cqlengine.management import get_fields, sync_table, drop_table
|
from cqlengine.management import get_fields, sync_table, drop_table
|
||||||
from cqlengine.tests.base import BaseCassEngTestCase
|
from cqlengine.tests.base import BaseCassEngTestCase
|
||||||
from cqlengine import management
|
from cqlengine import management
|
||||||
@@ -140,3 +140,11 @@ class SyncTableTests(BaseCassEngTestCase):
|
|||||||
|
|
||||||
table_settings = management.get_table_settings(PrimaryKeysOnlyModel)
|
table_settings = management.get_table_settings(PrimaryKeysOnlyModel)
|
||||||
assert SizeTieredCompactionStrategy in table_settings.options['compaction_strategy_class']
|
assert SizeTieredCompactionStrategy in table_settings.options['compaction_strategy_class']
|
||||||
|
|
||||||
|
class NonModelFailureTest(BaseCassEngTestCase):
|
||||||
|
class FakeModel(object):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_failure(self):
|
||||||
|
with self.assertRaises(CQLEngineException):
|
||||||
|
sync_table(self.FakeModel)
|
||||||
|
Reference in New Issue
Block a user