Ejemplo n.º 1
0
        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
Ejemplo n.º 2
0
        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
Ejemplo n.º 3
0
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'
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
    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))
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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'
Ejemplo n.º 10
0
    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))
Ejemplo n.º 11
0
def run_through_task_parse_generator(todo_file):
    taskparsergenerator = TaskParserGenerator(todo_file)
    return taskparsegenerator.parse()