diff --git a/billard/tasks.py b/billard/tasks.py index 0e81fef..092686d 100644 --- a/billard/tasks.py +++ b/billard/tasks.py @@ -9,23 +9,34 @@ from . import utils def process_location_data(): data = models.LocationData.objects.filter(processed=False) for ld in data: - cli = models.Client.objects.get(uuid=ld.location_id) - ac = models.Accounting.objects.filter(client=cli).order_by('time_from').reverse()[0] - if ld.on_off: - if ac.time_to is None: - ac.time_to = datetime.now() - ac.save() - ac = models.Accounting( - client=cli, - desk_no=ld.table_no, - time_from=ld.tst, - ) - ac.save() - ld.processed=True + cli = models.Client.objects.filter(uuid=ld.location_id) + if cli.count() < 1: + ld.processed = True + ld.error_msg = 'No location object found. Stopp processing!' ld.save() + # TODO Send error eMail to Admin else: - ac.time_to = ld.tst - ac.prize = utils.get_prize_for(start=ac.time_from, end=ac.time_to, pph=cli.desk1_prize_ht) - ac.save() - ld.processed=True - ld.save() + cli = cli[0] + ac = models.Accounting.objects.filter(client=cli).order_by('time_from').reverse() + if ld.on_off: + if ac.count() > 0 and ac[0].time_to is None: + ac[0].time_to = datetime.now() + ac[0].save() + # TODO Send error eMail to Admin + acc = models.Accounting( + client=cli, + desk_no=ld.table_no, + time_from=ld.tst, + ) + acc.save() + ld.delete() + else: + acc = ac[0] + acc.time_to = ld.tst + acc.prize = utils.get_prize_for( + start=acc.time_from, + end=ld.tst, + pph=cli.desk1_prize_ht + ) + acc.save() + ld.delete() diff --git a/billard/utils.py b/billard/utils.py index 78cb835..4251112 100644 --- a/billard/utils.py +++ b/billard/utils.py @@ -1,7 +1,7 @@ from datetime import datetime, date, time -def get_prize_for(start, end=datetime.now(), pph=0): +def get_prize_for(start, end, pph=0): """ calculate prize of billard table rental