carom-server/billard/tasks.py

43 lines
1.4 KiB
Python

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, desk_no=ld.table_no).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()