diff options
author | Mike Crute <mcrute@gmail.com> | 2010-02-05 18:01:43 -0500 |
---|---|---|
committer | Mike Crute <mcrute@gmail.com> | 2010-02-05 18:01:43 -0500 |
commit | 641b23a4925e08534d02c6f274e6a56c729a583b (patch) | |
tree | 24c7e8b6598c3e700773c59d453dc4d94e4915bf | |
parent | 15c2c2ee1066dd21e19446fc583f536d0992c16a (diff) | |
download | kronos-641b23a4925e08534d02c6f274e6a56c729a583b.tar.bz2 kronos-641b23a4925e08534d02c6f274e6a56c729a583b.tar.xz kronos-641b23a4925e08534d02c6f274e6a56c729a583b.zip |
Changing get to return a list of all items.
-rw-r--r-- | kronos/storage.py | 31 | ||||
-rw-r--r-- | kronos/tests/itest_sqlite_storage.py | 14 |
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 | ||
65 | if __name__ == "__main__": | 71 | if __name__ == "__main__": |
66 | unittest.main() | 72 | unittest.main() |