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:
parent
93655127db
commit
ebe9548fb3
50
tx
50
tx
@ -10,6 +10,28 @@ def get_current_date():
|
|||||||
def get_timefile_line(date, time, desc):
|
def get_timefile_line(date, time, desc):
|
||||||
return date + " " + time + " " + desc + "\n"
|
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
|
# Parse command line arguments
|
||||||
parser = argparse.ArgumentParser(prog='time.txt', description="Description")
|
parser = argparse.ArgumentParser(prog='time.txt', description="Description")
|
||||||
subparsers = parser.add_subparsers(help='sub-command help', dest='mode')
|
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("time")
|
||||||
parser_b.add_argument("description")
|
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')
|
parser_c = subparsers.add_parser('create', help='b help')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
@ -32,22 +59,21 @@ args = parser.parse_args()
|
|||||||
filename = args.file if args.file else 'time.txt'
|
filename = args.file if args.file else 'time.txt'
|
||||||
|
|
||||||
if not args.mode or args.mode == "total":
|
if not args.mode or args.mode == "total":
|
||||||
with open(filename, 'r') as time_file:
|
print("Total time:", get_total(filename))
|
||||||
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)
|
|
||||||
|
|
||||||
elif args.mode == "add":
|
elif args.mode == "add":
|
||||||
with open(filename, 'a') as time_file:
|
with open(filename, 'a') as time_file:
|
||||||
|
# TODO: Validate date and time
|
||||||
time_file.write(get_timefile_line(args.date, args.time, args.description))
|
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":
|
elif args.mode == "create":
|
||||||
if (os.path.exists(filename)):
|
if (os.path.exists(filename)):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user