summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Crute <mcrute@gmail.com>2010-02-05 18:01:43 -0500
committerMike Crute <mcrute@gmail.com>2010-02-05 18:01:43 -0500
commit641b23a4925e08534d02c6f274e6a56c729a583b (patch)
tree24c7e8b6598c3e700773c59d453dc4d94e4915bf
parent15c2c2ee1066dd21e19446fc583f536d0992c16a (diff)
downloadkronos-641b23a4925e08534d02c6f274e6a56c729a583b.tar.bz2
kronos-641b23a4925e08534d02c6f274e6a56c729a583b.tar.xz
kronos-641b23a4925e08534d02c6f274e6a56c729a583b.zip
Changing get to return a list of all items.
-rw-r--r--kronos/storage.py31
-rw-r--r--kronos/tests/itest_sqlite_storage.py14
2 files changed, 29 insertions, 16 deletions
diff --git a/kronos/storage.py b/kronos/storage.py
index 4add988..2cb37a7 100644
--- a/kronos/storage.py
+++ b/kronos/storage.py
@@ -41,16 +41,20 @@ class BaseStorageBackEnd(object):
41 back-end. 41 back-end.
42 """ 42 """
43 name = model_obj.__name__ 43 name = model_obj.__name__
44 result = self.select(name, **kwargs)
45 44
46 instance = model_obj() 45 output = []
47 for key, value in result.items(): 46 for item in self.select(name, **kwargs):
48 if key != 'id': 47 instance = model_obj()
49 setattr(instance, key, value) 48
50 else: 49 for key, value in item.items():
51 instance.__db_id__ = value 50 if key != 'id':
51 setattr(instance, key, value)
52 else:
53 instance.__db_id__ = value
52 54
53 return instance 55 output.append(instance)
56
57 return output
54 58
55 def save(self, model_obj): 59 def save(self, model_obj):
56 """ 60 """
@@ -121,11 +125,14 @@ class SQLiteBackEnd(BaseStorageBackEnd):
121 self.connection = self.engine.connect(database) 125 self.connection = self.engine.connect(database)
122 126
123 def select(self, table, **kwargs): 127 def select(self, table, **kwargs):
124 sql = "SELECT * FROM {0} WHERE ".format(table) 128 sql = "SELECT * FROM {0}".format(table)
125 for key in kwargs.keys(): 129
126 sql += "{0}=? ".format(key) 130 if kwargs:
131 sql += " WHERE "
132 for key in kwargs.keys():
133 sql += "{0}=? ".format(key)
127 134
128 return self._get_normalized_results(sql, **kwargs)[0] 135 return self._get_normalized_results(sql, **kwargs)
129 136
130 def _get_normalized_results(self, sql, **kwargs): 137 def _get_normalized_results(self, sql, **kwargs):
131 self._check_connection() 138 self._check_connection()
diff --git a/kronos/tests/itest_sqlite_storage.py b/kronos/tests/itest_sqlite_storage.py
index 4628a23..e2a44d2 100644
--- a/kronos/tests/itest_sqlite_storage.py
+++ b/kronos/tests/itest_sqlite_storage.py
@@ -37,13 +37,14 @@ class TestSQLitBackEnd(unittest.TestCase):
37 self.model1.bar = '456' 37 self.model1.bar = '456'
38 self.model1.baz = '789' 38 self.model1.baz = '789'
39 39
40 self.storage.save(self.model1)
41
40 def test_no_connect_should_cause_error(self): 42 def test_no_connect_should_cause_error(self):
41 self.storage.connection = None 43 self.storage.connection = None
42 assert_raises(NotConnected, self.storage.save, self.model1) 44 assert_raises(NotConnected, self.storage.save, self.model1)
43 45
44 def test_save_and_select(self): 46 def test_save_and_select(self):
45 self.storage.save(self.model1) 47 results = self.storage.get(SampleModel, foo='123')[0]
46 results = self.storage.get(SampleModel, foo='123')
47 48
48 assert isinstance(results, SampleModel) 49 assert isinstance(results, SampleModel)
49 assert_equals(results.foo, '123') 50 assert_equals(results.foo, '123')
@@ -51,8 +52,7 @@ class TestSQLitBackEnd(unittest.TestCase):
51 assert_equals(results.baz, '789') 52 assert_equals(results.baz, '789')
52 53
53 def test_save_and_update(self): 54 def test_save_and_update(self):
54 self.storage.save(self.model1) 55 results = self.storage.get(SampleModel, foo='123')[0]
55 results = self.storage.get(SampleModel, foo='123')
56 results.foo = 'test' 56 results.foo = 'test'
57 self.storage.save(results) 57 self.storage.save(results)
58 58
@@ -61,6 +61,12 @@ class TestSQLitBackEnd(unittest.TestCase):
61 assert_equals(results.bar, '456') 61 assert_equals(results.bar, '456')
62 assert_equals(results.baz, '789') 62 assert_equals(results.baz, '789')
63 63
64 def test_get_without_args(self):
65 self.storage.save(self.model1)
66 results = self.storage.get(SampleModel)
67
68 assert_equals(len(results), 2)
69
64 70
65if __name__ == "__main__": 71if __name__ == "__main__":
66 unittest.main() 72 unittest.main()