diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | item.py | 29 | ||||
-rw-r--r-- | itemList.py | 28 | ||||
-rw-r--r-- | storage/__init__.py | 0 | ||||
-rw-r--r-- | storage/factory.py | 5 | ||||
-rw-r--r-- | storage/sqlite.py | 17 | ||||
-rw-r--r-- | storage/storageBase.py | 11 | ||||
-rwxr-xr-x | todolist.py | 27 |
8 files changed, 118 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc @@ -0,0 +1,29 @@ +class item: + readOnly = ['id'] + + def __init__(self, title, created, priority): + self.id = -1 + self.title = title + self.created = created + self.priority = priority + + def setId(self, id): + if self.id == -1: + self.id = id + + def getTitle(self): + return self.title + + def getCreatedAt(self): + return self.created + + def getPriority(self): + return self.priority + + def __setattr__(self, name, value): + if name not in item.readOnly: + if name not in self.__dict__ or self.__dict__[name] != value: + self.__dict__[name] = value + + if 'observer' in self.__dict__: + self.observer.notifyChange(self) diff --git a/itemList.py b/itemList.py new file mode 100644 index 0000000..527c837 --- /dev/null +++ b/itemList.py @@ -0,0 +1,28 @@ +class itemList: + def __init__(self, observer): + self.data = [] + self.observer = observer + + def __len__(self): + return len(self.data) + + def __getitem__(self, idx): + return self.data[idx] + + def __setitem__(self, idx, item): + self.data[idx] = item + + def append(self, item): + item.observer = self + self.data.append(item) + self.observer.notifyChange(item) + + def notifyChange(self, sender): + self.observer.notifyChange(sender) + + def __add__(self, item): + self.append(item) + return self + + def __iter__(self): + return self.data.__iter__() diff --git a/storage/__init__.py b/storage/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/storage/__init__.py diff --git a/storage/factory.py b/storage/factory.py new file mode 100644 index 0000000..c1fa049 --- /dev/null +++ b/storage/factory.py @@ -0,0 +1,5 @@ +from sqlite import * + +def getStorage(): + x = sqlite() + return x diff --git a/storage/sqlite.py b/storage/sqlite.py new file mode 100644 index 0000000..8a24858 --- /dev/null +++ b/storage/sqlite.py @@ -0,0 +1,17 @@ +from storageBase import storageBase +from itemList import itemList +from pysqlite2 import dbapi2 as sqliteBackend + +class sqlite(storageBase): + def __init__(self): + self.con = sqliteBackend.connect(self.getConfigDir() + '/data.sqlite') + + def __del__(self): + self.con.close() + + def load(self): + return itemList(self) + + def notifyChange(self, sender): + print '%s %s' % ('Save changes:', sender.getCreatedAt()) + return diff --git a/storage/storageBase.py b/storage/storageBase.py new file mode 100644 index 0000000..24abd2c --- /dev/null +++ b/storage/storageBase.py @@ -0,0 +1,11 @@ +import os + +class storageBase: + def notifyChange(self, sender): abstract + + def getConfigDir(self): + dir = os.path.expanduser('~/.todolist/blub') + if not os.path.exists(dir): + os.makedirs(dir) + + return dir diff --git a/todolist.py b/todolist.py new file mode 100755 index 0000000..141f5d1 --- /dev/null +++ b/todolist.py @@ -0,0 +1,27 @@ +#!/usr/bin/python + +import storage.factory +import item + +from time import time + +def main(): + store = storage.factory.getStorage() + items = store.load() + items += item.item("Test1", time(), 0) + items += item.item("Test1", time(), 0) + items += item.item("Test1", time(), 0) + + for i in items: + print i.getTitle() + print i.getCreatedAt() + print i.getPriority() + print '========================================' + + items[len(items)-1].id = 'new Title' + items[len(items)-1].id = 'new Title' + + return + +if __name__ == '__main__': + main() |