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'])
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
from cqlengine.models import Model
|
||||
|
||||
# system keyspaces
|
||||
schema_columnfamilies = NamedTable('system', 'schema_columnfamilies')
|
||||
@@ -74,9 +74,13 @@ def sync_table(model, create_missing_keyspace=True):
|
||||
:type create_missing_keyspace: bool
|
||||
"""
|
||||
|
||||
if not issubclass(model, Model):
|
||||
raise CQLEngineException("Models must be derived from base Model.")
|
||||
|
||||
if model.__abstract__:
|
||||
raise CQLEngineException("cannot create table from abstract model")
|
||||
|
||||
|
||||
#construct query string
|
||||
cf_name = model.column_family_name()
|
||||
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.tests.base import BaseCassEngTestCase
|
||||
from cqlengine import management
|
||||
@@ -140,3 +140,11 @@ class SyncTableTests(BaseCassEngTestCase):
|
||||
|
||||
table_settings = management.get_table_settings(PrimaryKeysOnlyModel)
|
||||
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