Add bill option; fix negative minutes

The minutes were positive even when the hours were negative. This is obviously undesired, we want the entire time to be negative. That was fixed.
This commit is contained in:
karl 2020-12-15 21:38:01 +01:00
parent 93655127db
commit ebe9548fb3

50
tx
View File

@ -10,6 +10,28 @@ def get_current_date():
def get_timefile_line(date, time, desc):
return date + " " + time + " " + desc + "\n"
def get_total(filename):
with open(filename, 'r') as time_file:
total_time = timedelta()
for line in time_file:
date_time_description = line.split(" ", 2)
hours, minutes = date_time_description[1].split(':', 1)
# Parse the time to integers
hours_int = int(hours)
minutes_int = int(minutes)
# Make sure that both the hours and the minutes are negative if there's a "-" before the time
if hours_int < 0: minutes_int *= -1
delta = timedelta(hours=hours_int, minutes=minutes_int)
total_time += delta
return total_time
# Parse command line arguments
parser = argparse.ArgumentParser(prog='time.txt', description="Description")
subparsers = parser.add_subparsers(help='sub-command help', dest='mode')
@ -25,6 +47,11 @@ parser_b.add_argument("date", nargs='?', default=get_current_date())
parser_b.add_argument("time")
parser_b.add_argument("description")
parser_b = subparsers.add_parser('bill', help='b help')
parser_b.add_argument("date", nargs='?', default=get_current_date())
parser_b.add_argument("time")
parser_b.add_argument("description")
parser_c = subparsers.add_parser('create', help='b help')
args = parser.parse_args()
@ -32,23 +59,22 @@ args = parser.parse_args()
filename = args.file if args.file else 'time.txt'
if not args.mode or args.mode == "total":
with open(filename, 'r') as time_file:
total_time = timedelta()
for line in time_file:
date_time_description = line.split(" ", 2)
hours, minutes = date_time_description[1].split(':', 1)
delta = timedelta(hours=int(hours), minutes=int(minutes))
total_time += delta
print('Total time: ', total_time)
print("Total time:", get_total(filename))
elif args.mode == "add":
with open(filename, 'a') as time_file:
# TODO: Validate date and time
time_file.write(get_timefile_line(args.date, args.time, args.description))
print("New total:", get_total(filename))
elif args.mode == "bill":
with open(filename, 'a') as time_file:
# TODO: Validate date and time
time_file.write(get_timefile_line(args.date, "-" + args.time, args.description))
print("New total:", get_total(filename))
elif args.mode == "create":
if (os.path.exists(filename)):
print("Error: File", filename, "already exists, can't create a new one!")