Files
deb-python-cassandra-driver/cassandraengine/manager.py
Blake Eggleston 4764b492eb adding single instance delete method and supporting unit test
adding column type stubs
updating readme
2012-11-11 11:43:05 -08:00

85 lines
2.4 KiB
Python

#manager class
from cassandraengine.query import QuerySet
class Manager(object):
def __init__(self, model):
super(Manager, self).__init__()
self.model = model
@property
def column_family_name(self):
"""
Returns the column family name if it's been defined
otherwise, it creates it from the module and class name
"""
if self.model.db_name:
return self.model.db_name
cf_name = self.model.__module__ + '.' + self.model.__name__
cf_name = cf_name.replace('.', '_')
#trim to less than 48 characters or cassandra will complain
cf_name = cf_name[-48:]
return cf_name
def __call__(self, **kwargs):
"""
filter shortcut
"""
return self.filter(**kwargs)
def find(self, pk):
"""
Returns the row corresponding to the primary key value given
"""
values = QuerySet(self.model).find(pk)
if values is None: return
#change the column names to model names
#in case they are different
field_dict = {}
db_map = self.model._db_map
for key, val in values.items():
if key in db_map:
field_dict[db_map[key]] = val
else:
field_dict[key] = val
return self.model(**field_dict)
def all(self):
return QuerySet(self.model).all()
def filter(self, **kwargs):
return QuerySet(self.model).filter(**kwargs)
def exclude(self, **kwargs):
return QuerySet(self.model).exclude(**kwargs)
def create(self, **kwargs):
return self.model(**kwargs).save()
def delete(self, **kwargs):
pass
#----single instance methods----
def _save_instance(self, instance):
"""
The business end of save, this is called by the models
save method and calls the Query save method. This should
only be called by the model saving itself
"""
QuerySet(self.model).save(instance)
def _delete_instance(self, instance):
"""
Deletes a single instance
"""
QuerySet(self.model).delete_instance(instance)
#----column family create/delete----
def _create_column_family(self):
QuerySet(self.model)._create_column_family()
def _delete_column_family(self):
QuerySet(self.model)._delete_column_family()