Example #1
0
def cmd_clear(settings):
    """
        Drop all tables and re-create.
    """
    sa = get_session(settings.dbref, metadata=metadata)

    for name, table in metadata.tables.items():

        print(table.delete())
        sa.execute(table.delete())

    sa.commit()

    sa = get_session(settings.dbref, initialize=True, metadata=metadata)
Example #2
0
def cmd_find(settings, LIKE):
    """
        Look for tag.
    """
    sa = get_session(settings.dbref, metadata=metadata)
    alikes = sa.query(Tag).filter(Tag.name.like(LIKE)).all()
    for tag in alikes:
        print(tag.name)
Example #3
0
def cmd_list(settings):
    """
        List to root tags.
    """
    sa = get_session(settings.dbref, metadata=metadata)
    roots = sa.query(Tag).filter(Tag.contexts == None).all()
    for root in roots:
        print(root.name)
Example #4
0
def cmd_record(settings, opts, TAGS):
    """
        Record tags/paths. Report on inconsistencies.
    """
    sa = get_session(settings.dbref, initialize=True, metadata=metadata)
    assert TAGS # TODO: read from stdin
    for raw_tag in TAGS:
        Tag.record(raw_tag, sa, opts)
Example #5
0
def cmd_insert(title, before_ID):
    """
        todo [options] insert <title-or-ID>
    """
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    before = Task.fetch(((Task.task_id == before_ID[0]),), sa=sa)
    task = Task(title=title, prerequisite_id=before.task_id)
    sa.add(task)
    sa.commit()
Example #6
0
def cmd_ungroup(ID, settings):
    """
        todo ungroup ID
    """
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    for id_ in ID:
        node = Task.byKey(dict(task_id=id_), sa=sa)
        node.partOf_id = None
        sa.add(node)
    sa.commit()
Example #7
0
def cmd_rm(ID, settings):
    """
        todo rm ID...

    Delete tasks.
    """
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    for id_ in ID:
        task = Task.fetch(((Task.task_id == id_),), sa=sa)
        sa.delete(task)
        sa.commit()
        print_Task(task)
Example #8
0
def cmd_update(ID, title, description, group, opts, settings):
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    task = Task.find(( Task.title == title, ), sa=sa)
    if group:
        group = Task.find(( Task.title == group, ), sa=sa)
        assert group, opts.args.group
    # TODO: title, description
    # TODO: prerequisites...
    # requiredFor...
    # partOf
    # subtasks...
    pass
Example #9
0
def cmd_import(input, settings):
    """
        todo import -i FILE
    """
    input = input or settings.input
    assert input, "Missing input file."
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    json = js.load(open(input, 'r'))
    assert json['version'] == __version__, json['version']
    for t in json['tasks']:
        task = Task(**t)
        sa.add(task)
    sa.commit()
Example #10
0
def cmd_export(output, settings):
    """
        todo export -o FILE
    """
    output = output or settings.output
    assert settings.output, "Missing output file."
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    tasks = sa.query(Task).all()
    data = {
        'version': __version__,
        'tasks': [ t.copy(True) for t in tasks ]
    }
    js.dump(data, open(settings.output, 'w+'))
Example #11
0
def cmd_new(title, description, group, opts, settings):
    """
        todo [options] new <title> <description> <group>
    """
    sa = get_session(settings.dbref)
    if group:
        group = Task.find(( Task.title == group, ), sa=sa)
        assert group, opts.args.group
    task = Task(
            title = title,
            description = description,
            partOf = group
    )
    sa.add(task)
    sa.commit()
    print_Task(task)
Example #12
0
def cmd_depends(ID, DEPENDENCIES, settings):
    """
        todo ID requires DEPENDENCIES...

    """
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    node = Task.byKey(dict(task_id=ID), sa=sa)
    for dep_ID in DEPENDENCIES:
        dep = Task.byKey(dict(task_id=dep_ID), sa=sa)
        dep.requiredFor_id = ID
        sa.add(dep)
        ID = dep_ID
    else:
        dep = Task.byKey(dict(requiredFor_id=ID), sa=sa)
        dep.requiredFor_id = None
        sa.add(dep)
    sa.commit()
Example #13
0
def cmd_prerequisite(ID, PREREQUISITES, settings):
    """
        todo ID depends PREREQUISITES...

    (Re)Set ID to depend on first prerequisite ID. If more prerequisites are
    given, apply the same to every following ID in sequence.

    This sets an unqualified dependency.
    TODO: check level
    """
    sa = get_session(settings.dbref, metadata=SqlBase.metadata)
    node = Task.byKey(dict(task_id=ID), sa=sa)
    for prereq_ID in PREREQUISITES:
        node.requiredFor_id = prereq_ID
        sa.add(node)
        node = Task.byKey(dict(task_id=prereq_ID), sa=sa)
    else:
        node.requiredFor_id = None
        sa.add(node)
    sa.commit()
Example #14
0
def cmd_info(settings):

    """
        Verify DB connection is working. Print some settings and storage stats.
    """

    for l, v in (
            ( 'Settings Raw', pformat(settings.todict()) ),
            ( 'DBRef', settings.dbref ),

            ( "Tables in schema", ", ".join(metadata.tables.keys()) ),
            ( "Table lengths", "" ),
    ):
        log.std('{green}%s{default}: {bwhite}%s{default}', l, v)

    sa = get_session(settings.dbref, metadata=metadata)

    for t in metadata.tables:
        try:
            log.std("  {blue}%s{default}: {bwhite}%s{default}",
                    t, sa.query(metadata.tables[t].count()).all()[0][0])
        except Exception, e:
            log.err("Count failed for %s: %s", t, e)
Example #15
0
def cmd_list(settings):
    sa = get_session(settings.dbref)
    roots = sa.query(Task).filter(Task.partOf_id == None).all()
    indented_tasks('', sa, settings, roots)
Example #16
0
def cmd_find(title, settings):
    sa = get_session(settings.dbref)
    task = Task.find(( Task.title == title, ), sa=sa)
    print_Task(task)
Example #17
0
def cmd_init(settings):
    """
        Commit SQL DDL to storage schema. Creates DB file if not present.
    """
    sa = get_session(settings.dbref, initialize=True, metadata=metadata)