Skip to content

Commit a0f86f1

Browse files
committed
Fix class model copy
1 parent 894b9be commit a0f86f1

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

cassandra/cqlengine/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@
2929
log = logging.getLogger(__name__)
3030

3131

32+
def _copy_model_class(model, attrs):
33+
new_type = type(model.__name__, (model,), attrs)
34+
new_type.__abstract__ = model.__abstract__
35+
new_type.__discriminator_value__ = model.__discriminator_value__
36+
new_type.__default_ttl__ = model.__default_ttl__
37+
return new_type
38+
39+
3240
class ModelException(CQLEngineException):
3341
pass
3442

cassandra/cqlengine/query.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,9 @@ def __init__(self, model, keyspace=None):
300300
self.model = model
301301

302302
if keyspace:
303+
from cassandra.cqlengine.models import _copy_model_class
303304
ks = keyspace
304-
new_type = type(model.__name__, (model,), {'__keyspace__': ks})
305-
self.model = new_type
305+
self.model = _copy_model_class(model, {'__keyspace__': ks})
306306

307307
def __enter__(self):
308308
return self.model
@@ -990,8 +990,8 @@ def using(self, keyspace=None, connection=None):
990990

991991
clone = copy.deepcopy(self)
992992
if keyspace:
993-
new_type = type(self.model.__name__, (self.model,), {'__keyspace__': keyspace})
994-
clone.model = new_type
993+
from cassandra.cqlengine.models import _copy_model_class
994+
clone.model = type(self.model, {'__keyspace__': keyspace})
995995

996996
if connection:
997997
clone._connection = connection

0 commit comments

Comments
 (0)