Example #1
0
def query_project(
        timesheet_pathname,
        project_pattern,
        aggregate):
    records = track_time.parse(file(timesheet_pathname, "r"))
    selected_records = track_time.filter_projects_by_name(records,
        project_pattern)
    merged_records = track_time.merge_records_by_project(selected_records)

    if aggregate:
        merged_records = track_time.merge_child_projects_with_parents(
            merged_records)

    # Number of hours per projects ---------------------------------------------
    table = prettytable.PrettyTable(["Project", "Hours", "Days"])
    table.align["Project"] = "l"
    table.align["Hours"] = "r"
    table.align["Days"] = "r"
    table.sortby="Project"

    for record in merged_records:
        table.add_row([
            record.project_string(),
            "{:.2f}".format(record.nr_hours),
            "{:.2f}".format(record.nr_days)
        ])

    write_table(table)


    # Number of hours overall --------------------------------------------------
    table = prettytable.PrettyTable(["Hours", "Days"])
    table.align["Hours"] = "r"
    table.align["Days"] = "r"

    nr_hours = 0.0
    nr_days = 0.0
    for record in merged_records:
        nr_hours += record.nr_hours
        nr_days += record.nr_days

    table.add_row([
        "{:.2f}".format(nr_hours),
        "{:.2f}".format(nr_days)
    ])

    write_table(table)
Example #2
0
    def test_merge_records_by_project(self):
        records = track_time.parse(file("sub_projects-001.txt"))

        merged_records = track_time.merge_records_by_project(records)
        self.assertEqual(len(merged_records), 14)