from __future__ import absolute_import, unicode_literals from celery import shared_task from . import models from datetime import datetime from . import utils @shared_task def process_location_data(): data = models.LocationData.objects.filter(processed=False) for ld in data: 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: 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()