forked from Trygve/otime
La til cli argumenter og resultattabell
This commit is contained in:
parent
b33cf0274a
commit
170542fbd0
128
cli.py
Normal file → Executable file
128
cli.py
Normal file → Executable file
@ -1,7 +1,11 @@
|
||||
#!/usr/bin/env python
|
||||
import otime
|
||||
|
||||
import argparse
|
||||
import datetime
|
||||
from rich import print
|
||||
from rich.console import Console
|
||||
from rich.columns import Columns
|
||||
from rich.table import Table
|
||||
def print_runners(Runners):
|
||||
table = Table(title="Runners")
|
||||
@ -30,21 +34,48 @@ def print_time(Runners):
|
||||
tottime = 0
|
||||
table.add_row(i.fullname(), i.o_class.name, str(i.splits), str(i.check_codes()), str(tottime))
|
||||
|
||||
console = Console()
|
||||
console.print(table)
|
||||
def print_class_result(runners, o_class):
|
||||
table = Table(title=o_class.name)
|
||||
table.add_column("Pos", style="red", no_wrap=True)
|
||||
table.add_column("Name", justify="right", style="cyan", no_wrap=True)
|
||||
table.add_column("Club", style="magenta")
|
||||
table.add_column("Time", justify="right", style="blue")
|
||||
pos = 0
|
||||
if o_class:
|
||||
runners = otime.get_runners_in_class(runners, o_class)
|
||||
runners_ok = []
|
||||
for n in runners:
|
||||
if n.status() == 'OK':
|
||||
runners_ok.append(n)
|
||||
runners_ok.sort(key=lambda x: x.totaltime())
|
||||
for i in runners_ok:
|
||||
#if i.status() == 'OK':
|
||||
pos += 1
|
||||
table.add_row(str(pos)+'.',i.fullname(), i.status(), str(datetime.timedelta(seconds=i.totaltime())))
|
||||
|
||||
console = Console()
|
||||
console.print(table)
|
||||
def print_class_splits(runners, o_class):
|
||||
table = Table(title=o_class.name)
|
||||
table.add_column("Pos", style="red", no_wrap=True)
|
||||
table.add_column("Name", justify="right", style="cyan", no_wrap=True)
|
||||
table.add_column("club", style="magenta")
|
||||
table.add_column("card", style="red")
|
||||
table.add_column("class", justify="right", style="green")
|
||||
table.add_column("controls", justify="right", style="blue")
|
||||
for i in o_class.course.codes:
|
||||
table.add_column(str(i))
|
||||
|
||||
for i in runners:
|
||||
if i.o_class == o_class:
|
||||
table.add_row(i.fullname(), i.club ,str(i.card))
|
||||
if o_class:
|
||||
for i in o_class.course.codes:
|
||||
table.add_column(str(i))
|
||||
runners = otime.get_runners_in_class(runners, o_class)
|
||||
runners_ok = []
|
||||
for n in runners:
|
||||
if n.status() == 'OK':
|
||||
runners_ok.append(n)
|
||||
runners_ok.sort(key=lambda x: x.totaltime())
|
||||
pos = 0
|
||||
for i in runners_ok:
|
||||
pos += 1
|
||||
list_string = map(lambda x:str(datetime.timedelta(seconds=x)), i.res_splits())
|
||||
table.add_row(str(pos)+'.', i.fullname(), i.club, *list_string)
|
||||
|
||||
console = Console()
|
||||
console.print(table)
|
||||
@ -60,15 +91,72 @@ def print_o_classes(class_list):
|
||||
console = Console()
|
||||
console.print(table)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'--debug',
|
||||
action='store_true',
|
||||
help='Print debug info'
|
||||
)
|
||||
subparsers = parser.add_subparsers(dest='command')
|
||||
show_runners = subparsers.add_parser('show_runners', help='show a table of runners')
|
||||
show_runners.add_argument('--ttcnf', required=True, help='ttime configuration file')
|
||||
show_runners.add_argument('--ttdb', required=True, help='ttime database file')
|
||||
show_runners.add_argument('--mtr', required=True, help='mtr csv file')
|
||||
|
||||
show_runners = subparsers.add_parser('show_result', help='show a table of runners')
|
||||
show_runners.add_argument('--ttcnf', required=True, help='ttime configuration file')
|
||||
show_runners.add_argument('--ttdb', required=True, help='ttime database file')
|
||||
show_runners.add_argument('--mtr', required=True, help='mtr csv file')
|
||||
show_runners.add_argument('--class', dest='o_class_str', help='Which class to show. Prints all classes if not set')
|
||||
show_runners.add_argument('--splits', action='store_true', help='Shows split times')
|
||||
|
||||
show_classes = subparsers.add_parser('show_classes', help='show a table of classes')
|
||||
show_classes.add_argument('--ttcnf', required=True, help='ttime configuration file')
|
||||
show_classes.add_argument('--ttdb', required=True, help='ttime db files')
|
||||
show_classes.add_argument('--mtr', required=True, help='mtr csv file')
|
||||
|
||||
create_xml = subparsers.add_parser('create_xml', help='Create xml result file')
|
||||
create_xml.add_argument('--ttcnf', required=True, help='ttime configuration file')
|
||||
create_xml.add_argument('--ttdb', required=True, help='ttime database file')
|
||||
create_xml.add_argument('--mtr', required=True, help='mtr csv file')
|
||||
create_xml.add_argument('--file', required=True, help='Filename for result file')
|
||||
|
||||
args = parser.parse_args()
|
||||
if args.command == 'show_runners':
|
||||
courses = otime.courses_from_ttime_conf(args.ttcnf)
|
||||
o_classes = otime.classes_from_ttime_conf(args.ttcnf, courses)
|
||||
runner_list = otime.ttime_db_to_class(args.ttdb, o_classes)
|
||||
otime.ttime_mtr_to_class(args.mtr, runner_list)
|
||||
print_runners(runner_list)
|
||||
if args.command == 'show_result':
|
||||
courses = otime.courses_from_ttime_conf(args.ttcnf)
|
||||
o_classes = otime.classes_from_ttime_conf(args.ttcnf, courses)
|
||||
runner_list = otime.ttime_db_to_class(args.ttdb, o_classes)
|
||||
otime.ttime_mtr_to_class(args.mtr, runner_list)
|
||||
for n in o_classes:
|
||||
if args.o_class_str == n.name:
|
||||
o_class = n
|
||||
break
|
||||
else:
|
||||
print('Class not found')
|
||||
if args.splits:
|
||||
print_class_splits(runner_list, o_class)
|
||||
else:
|
||||
print_class_result(runner_list, o_class)
|
||||
elif args.command == 'show_classes':
|
||||
courses = otime.courses_from_ttime_conf(args.ttcnf)
|
||||
o_classes = otime.classes_from_ttime_conf(args.ttcnf, courses)
|
||||
runner_list = otime.ttime_db_to_class(args.ttdb, o_classes)
|
||||
otime.ttime_mtr_to_class(args.mtr, runner_list)
|
||||
print_o_classes(o_classes)
|
||||
|
||||
if args.command == 'create_xml':
|
||||
courses = otime.courses_from_ttime_conf(args.ttcnf)
|
||||
o_classes = otime.classes_from_ttime_conf(args.ttcnf, courses)
|
||||
runner_list = otime.ttime_db_to_class(args.ttdb, o_classes)
|
||||
otime.ttime_mtr_to_class(args.mtr, runner_list)
|
||||
otime.gen_xml_result(runner_list, o_classes).write(args.file)
|
||||
|
||||
if __name__ == "__main__":
|
||||
courses = otime.courses_from_ttime_conf('sc_2021_ttime/ttime.cnf.txt')
|
||||
o_classes = otime.classes_from_ttime_conf('sc_2021_ttime/ttime.cnf.txt', courses)
|
||||
runner_list = otime.ttime_db_to_class('sc_2021_ttime/db_eventor.csv', o_classes)
|
||||
#runner_list = otime.xml_to_class('entries_KOK_Sommercup,_løp_2.xml', o_classes)
|
||||
otime.ttime_mtr_to_class('sc_2021_ttime/mtr.csv', runner_list)
|
||||
#print_runners(runner_list)
|
||||
#print_time(runner_list)
|
||||
#print_o_classes(o_classes)
|
||||
#print_class_splits(runner_list, o_classes[0])
|
||||
#print(otime.check_codes(runner_list[1]))
|
||||
otime.gen_xml_result(runner_list, o_classes)
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user