update tasks

This commit is contained in:
2017-02-10 21:02:07 +01:00
parent 263bff6540
commit c8c25714f0
3 changed files with 80 additions and 44 deletions

View File

@@ -2,10 +2,11 @@ import uuid
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime, timezone
from billard import utils
from billard import utils, tasks
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from celery import shared_task
class LocationData(models.Model):
@@ -100,4 +101,42 @@ class Accounting(models.Model):
@receiver(post_save, sender=LocationData)
def test(sender, **kwargs):
print('test')
process_location_data()
@shared_task
def process_location_data():
data = LocationData.objects.filter(processed=False)
for ld in data:
cli = Client.objects.filter(uuid=ld.client_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]
desk = cli.desks.filter(desk_no=ld.desk_no)[0]
ac = Accounting.objects.filter(client=cli, desk_no=ld.desk_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 = Accounting(
client=cli,
desk_no=ld.desk_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=desk.prize
)
acc.save()
ld.delete()