def archive(self, args): archived = [] project = None for task in self.tasks: if isinstance(task, Project): archived_project = None archived_tasks = task.get_done() if archived_tasks: archived_project = Project(task.name, archived_tasks) archived.append(archived_project) elif task.done: archived.append(task) self.tasks.remove(task) if archived: date = datetime.now().isoformat() name = _archive_tmpl + "_" + date with file(name, "w") as f: pass parserGenerator = TaskParserGenerator(name) parserGenerator.generate(archived) return True
def archive(self, args): archived = [] project = None for task in self.tasks: if isinstance(task, Project): archived_project = None archived_tasks = task.get_done() if archived_tasks: archived_project = Project(task.name, archived_tasks) archived.append(archived_project) elif task.done: archived.append(task) self.tasks.remove(task) if archived: date = datetime.now().isoformat() name = _archive_tmpl + '_' + date with file(name, 'w') as f: pass parserGenerator = TaskParserGenerator(name) parserGenerator.generate(archived) return True
def test_todo_add_to_new_project(): tmp = mktmpdir() todofile = create_todo_file(tmp, todo_content_complex) parsergenerator = TaskParserGenerator(todofile) tasks, lastindex = parsergenerator.parse() todo = Todo.TodoCommands(tasks, lastindex) todo.add(('@test-project-3', 'hello there world')) parsergenerator.generate(tasks) with file(todofile) as fobj: want = ( "$version 1", "A - - test-task-1", "B - - test-task-2", "@test-project-1", "B - - test-task-4", "C - - test-task-3", "@test-project-2", "B - - test-task-5", "@test-project-3", "C - - hello there world" ) result = fobj.read() assert result == '\n'.join(want) + '\n'
def test_task_parser_missing_version(): tmpdir = mktmpdir() todo_file = os.path.join(tmpdir, 'todo') with file(todo_file, 'w') as f: f.write('\n'.join(todo_content_complex[1:])) taskparsergenerator = TaskParserGenerator(todo_file) with want_exception(ValueError('incorrect version in todo file')): tasks, _ = taskparsergenerator.parse()
def test_task_parser_missing_version(): tmpdir = mktmpdir() todo_file = os.path.join(tmpdir, 'todo') with file(todo_file, 'w') as f: f.write('\n'.join(todo_content_complex[1:])) taskparsergenerator = TaskParserGenerator(todo_file) with want_exception( ValueError('incorrect version in todo file') ): tasks, _ = taskparsergenerator.parse()
def test_todo_ls(): tmp = mktmpdir() todo_file = create_todo_file(tmp, todo_content_complex) tasks, last_index = TaskParserGenerator(todo_file).parse() todo = Todo.TodoCommands(tasks, last_index) output = cStringIO.StringIO() saveout = sys.stdout sys.stdout = output todo.ls('') result = output.getvalue() sys.stdout = saveout want = """ 1: test-task-1 2: test-task-2 @test-project-1 3: test-task-3 4: test-task-4 @test-project-2 5: test-task-5 """ assert want == result output.close()
def __init__(self, args): self.no_colors = False def parse_args_and_opts(args): optionParser = OptionParser() for opt in Todo.opts: optionParser.add_option(*opt[4:], help=opt[0], action=opt[1], dest=opt[2], default=opt[3]) return optionParser.parse_args() if not os.path.exists(os.path.dirname(_todo_file)): os.mkdir(os.path.dirname(_todo_file)) if not os.path.exists(_todo_file): with file(_todo_file, 'w') as f: pass try: opts, args = parse_args_and_opts(args) setattr(Todo, 'no_colors', opts.no_colors) parserGenerator = TaskParserGenerator(_todo_file) tasks, last_index = parserGenerator.parse() commandParser = CommandParser([cmd[1] for cmd in Todo.cmds]) command, args_left = commandParser.parse(args) changes = getattr(Todo.TodoCommands(tasks, last_index), command)(args_left) if changes: parserGenerator.generate(tasks) except (TodoError, IOError, ValueError) as err: print('error: {0}'.format(err))
def check_content(content): tmpdir = mktmpdir() todo_file = os.path.join(tmpdir, 'todo') with file(todo_file, 'w') as f: f.write('\n'.join(content)) tasks, _ = TaskParserGenerator(todo_file).parse() with file(todo_file) as f: want = '\n'.join(content) result = f.read() assert want == result
def test_todo_pri(): tmp = mktmpdir() todofile = create_todo_file(tmp, todo_content_complex) parsergenerator = TaskParserGenerator(todofile) tasks, lastindex = parsergenerator.parse() todo = Todo.TodoCommands(tasks, lastindex) todo.pri(['@test-project-1', "A"]) parsergenerator.generate(tasks) with file(todofile) as fobj: want = ( "$version 1", "A - - test-task-1", "B - - test-task-2", "@test-project-1", "A - - test-task-3", "A - - test-task-4", "@test-project-2", "B - - test-task-5") result = fobj.read() assert result == '\n'.join(want) + '\n'
def __init__(self, args): self.no_colors = False def parse_args_and_opts(args): optionParser = OptionParser() for opt in Todo.opts: optionParser.add_option(*opt[4:], help=opt[0], action=opt[1], dest=opt[2], default=opt[3]) return optionParser.parse_args() if not os.path.exists(os.path.dirname(_todo_file)): os.mkdir(os.path.dirname(_todo_file)) if not os.path.exists(_todo_file): with file(_todo_file, "w") as f: pass try: opts, args = parse_args_and_opts(args) setattr(Todo, "no_colors", opts.no_colors) parserGenerator = TaskParserGenerator(_todo_file) tasks, last_index = parserGenerator.parse() commandParser = CommandParser([cmd[1] for cmd in Todo.cmds]) command, args_left = commandParser.parse(args) changes = getattr(Todo.TodoCommands(tasks, last_index), command)(args_left) if changes: parserGenerator.generate(tasks) except (TodoError, IOError, ValueError) as err: print ("error: {0}".format(err))
def run_through_task_parse_generator(todo_file): taskparsergenerator = TaskParserGenerator(todo_file) return taskparsegenerator.parse()