def test_merge_child_projects_with_parents(self): records = track_time.parse(file("sub_projects-001.txt")) merged_records = track_time.merge_child_projects_with_parents(records) self.assertEqual(len(merged_records), 2) self.assertEqual(merged_records[0].date, None) self.assertEqual(merged_records[0].nr_hours, 48) self.assertEqual(merged_records[0].project, ["my_project_a"]) self.assertEqual(merged_records[1].date, None) self.assertEqual(merged_records[1].nr_hours, 48) self.assertEqual(merged_records[1].project, ["my_project_b"])
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)