cqle: add dict access sugar to UserType
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import re
|
||||
import six
|
||||
|
||||
from cassandra.cluster import UserTypeDoesNotExist
|
||||
from cassandra.util import OrderedDict
|
||||
from cassandra.cqlengine import CQLEngineException
|
||||
from cassandra.cqlengine import columns
|
||||
@@ -66,6 +65,43 @@ class BaseUserType(object):
|
||||
for v in self._values.values():
|
||||
v.reset_previous_value()
|
||||
|
||||
def __iter__(self):
|
||||
for field in self._fields.keys():
|
||||
yield field
|
||||
|
||||
def __getitem__(self, key):
|
||||
if not isinstance(key, six.string_types):
|
||||
raise TypeError
|
||||
if key not in self._fields.keys():
|
||||
raise KeyError
|
||||
return getattr(self, key)
|
||||
|
||||
def __setitem__(self, key, val):
|
||||
if not isinstance(key, six.string_types):
|
||||
raise TypeError
|
||||
if key not in self._fields.keys():
|
||||
raise KeyError
|
||||
return setattr(self, key, val)
|
||||
|
||||
def __len__(self):
|
||||
try:
|
||||
return self._len
|
||||
except:
|
||||
self._len = len(self._columns.keys())
|
||||
return self._len
|
||||
|
||||
def keys(self):
|
||||
""" Returns a list of column IDs. """
|
||||
return [k for k in self]
|
||||
|
||||
def values(self):
|
||||
""" Returns list of column values. """
|
||||
return [self[k] for k in self]
|
||||
|
||||
def items(self):
|
||||
""" Returns a list of column ID/value tuples. """
|
||||
return [(k, self[k]) for k in self]
|
||||
|
||||
@classmethod
|
||||
def register_for_keyspace(cls, keyspace):
|
||||
connection.register_udt(keyspace, cls.type_name(), cls)
|
||||
|
||||
Reference in New Issue
Block a user