update tasks
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user