diff --git a/cqlengine/connection.py b/cqlengine/connection.py index 988d5fd2..da86e600 100644 --- a/cqlengine/connection.py +++ b/cqlengine/connection.py @@ -62,7 +62,7 @@ def execute(query, params=None, consistency_level=None): if not session: raise CQLEngineException("It is required to setup() cqlengine before executing queries") - + if consistency_level is None: consistency_level = default_consistency_level diff --git a/cqlengine/management.py b/cqlengine/management.py index 54128ceb..a47e9e92 100644 --- a/cqlengine/management.py +++ b/cqlengine/management.py @@ -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) diff --git a/cqlengine/tests/management/test_management.py b/cqlengine/tests/management/test_management.py index 67e77a35..b7c492db 100644 --- a/cqlengine/tests/management/test_management.py +++ b/cqlengine/tests/management/test_management.py @@ -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)