diff --git a/DataStore.py b/DataStore.py index 8f6a214..ca3c1cc 100644 --- a/DataStore.py +++ b/DataStore.py @@ -150,11 +150,36 @@ WHERE name = ? AND parentid = ? parentid = task.taskid return task + def getTaskByShortName(self, name): + if name.find(':') >= 0: + return self.getTaskByName(name) + task = None + c = self.conn.cursor() + c.execute(''' +SELECT id, name, longname, parentid +FROM tasks +WHERE name = ? +''', (name,)) + count = 0 + for row in c: + count += 1 + task = Task(*row) + if count > 1: + return None + c.close() + self.conn.commit() + return task + def getParentTaskByName(self, name): parts = name.split(':') parentname = ':'.join(parts[:-1]) return self.getTaskByName(parentname) + def getParentTaskByShortName(self, name): + parts = name.split(':') + parentname = ':'.join(parts[:-1]) + return self.getTaskByShortName(parentname) + def createTask(self, name, longname, parentid): c = self.conn.cursor() if parentid is not None and parentid != '': diff --git a/dwtt b/dwtt index c3809d6..a00055c 100755 --- a/dwtt +++ b/dwtt @@ -61,9 +61,9 @@ def main(argv): def processStart(cmd, store): processOut(cmd, store) - task = store.getTaskByName(cmd.argstr) + task = store.getTaskByShortName(cmd.argstr) if task is None: - parent = store.getParentTaskByName(cmd.argstr) + parent = store.getParentTaskByShortName(cmd.argstr) if parent is None: return 'Could not find task "%s"' % \ (':'.join(cmd.argstr.split(':')[:-1])) @@ -94,7 +94,7 @@ def processTask(cmd, store): store.updateTask(task.taskid, nameparts[-1], longname) return False if len(nameparts) > 1: - parenttask = store.getParentTaskByName(fullname) + parenttask = store.getParentTaskByShortName(fullname) if parenttask is None: return 'Parent task not found' store.createTask(nameparts[-1].strip(), longname, parenttask.taskid)