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)
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)