diff --git a/python/report.py b/python/report.py index 905ad13..f0d7118 100644 --- a/python/report.py +++ b/python/report.py @@ -4,6 +4,7 @@ import pandas as pd import argparse +from datetime import datetime, timedelta # setup CLI parsing parser = argparse.ArgumentParser( @@ -14,7 +15,7 @@ parser.add_argument('-f', '--filename') parser.add_argument('-n', '--nexp') parser.add_argument('-l', '--lang') -parser.add_argument('-t', '--period') +parser.add_argument('-d', '--days') args = parser.parse_args() # localize @@ -26,7 +27,8 @@ f'Uscite', f'Uscite per ogni utente', f'Entrate', - f'Entrate per ogni utente' + f'Entrate per ogni utente', + f'Mi dispiace, non ho trovato nessuna spesa per il periodo richiesto' ], 'en': [f'Hi, here\'s the latest {args.nexp} expenses since', @@ -35,10 +37,14 @@ f'Sum of expenses', f'Sum of expenses for every user', f'Sum of incoming', - f'Sum of incoming for every user']} + f'Sum of incoming for every user', + f'Sorry, I could not find any expense for the given period' + ]} -def whole_report(df, startDate): +def whole_report(df): + startDate = df.dt.iloc[-1].date() + # latest N expenses print('{0} {1}:\n'.format( sentences[args.lang][0], @@ -71,10 +77,11 @@ sentences[args.lang][3], abs(outgoing))) - print('\n{0}:'.format(sentences[args.lang][4])) + if not userOut.empty: + print('\n{0}:'.format(sentences[args.lang][4])) - for user,value in userOut.iterrows(): - print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + for user,value in userOut.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) # incoming incoming = df.loc[df['FloatValue'] >= 0].FloatValue.sum() @@ -84,10 +91,18 @@ sentences[args.lang][5], abs(incoming))) - print('\n{0}:'.format(sentences[args.lang][6])) + if not userIn.empty: + print('\n{0}:'.format(sentences[args.lang][6])) - for user,value in userIn.iterrows(): - print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + for user,value in userIn.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + +def timestamp_report(df, days): + startDate = datetime.today() - timedelta(days = days) + try: + whole_report(df.loc[(df.dt >= startDate)]) + except IndexError: + print(sentences[args.lang][-1]) if __name__ == '__main__': # load CSV @@ -96,9 +111,9 @@ input['FloatValue'] = input[['Value']].astype(float) df = input.sort_values(by='dt', ascending=False) - startDate = df.dt.iloc[-1].date() - if not args.period: - whole_report(df, startDate) + + if args.days is None: + whole_report(df) else: - print(args.period) + timestamp_report(df, int(args.days)) diff --git a/python/report.sh b/python/report.sh index 0a5254a..a24bbad 100755 --- a/python/report.sh +++ b/python/report.sh @@ -1,7 +1,7 @@ #!/bin/bash function print_usage() { - echo "Usage: ./report.sh " + echo "Usage: ./report.sh " } if [[ "$#" -lt 3 ]]; then @@ -16,7 +16,7 @@ if [[ "$#" -eq 3 ]]; then python3 ${DIR}/report.py -f $1 -n $2 -l $3 elif [[ "$#" -eq 4 ]]; then - python3 ${DIR}/report.py -f $1 -n $2 -l $3 -t $4 + python3 ${DIR}/report.py -f $1 -n $2 -l $3 -d $4 else print_usage exit 1