diff --git a/billard/admin.py b/billard/admin.py index 823a2a6..13d095e 100644 --- a/billard/admin.py +++ b/billard/admin.py @@ -27,4 +27,4 @@ class DeskAdmin(admin.ModelAdmin): @admin.register(Accounting) class AccountingAdmin(admin.ModelAdmin): - list_display = ('client', 'desk_no', 'time_from', 'time_to', 'prize') + list_display = ('desk', 'time_from', 'time_to', 'prize', 'billed') diff --git a/billard/migrations/0012_auto_20170211_1003.py b/billard/migrations/0012_auto_20170211_1003.py new file mode 100644 index 0000000..d6873d4 --- /dev/null +++ b/billard/migrations/0012_auto_20170211_1003.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-02-11 09:03 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('billard', '0011_auto_20170210_2122'), + ] + + operations = [ + migrations.RemoveField( + model_name='accounting', + name='client', + ), + migrations.DeleteModel( + name='Accounting', + ), + ] diff --git a/billard/migrations/0013_accounting.py b/billard/migrations/0013_accounting.py new file mode 100644 index 0000000..1dcc17a --- /dev/null +++ b/billard/migrations/0013_accounting.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-02-11 09:03 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('billard', '0012_auto_20170211_1003'), + ] + + operations = [ + migrations.CreateModel( + name='Accounting', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time_from', models.DateTimeField(verbose_name='Beginn')), + ('time_to', models.DateTimeField(blank=True, null=True, verbose_name='Ende')), + ('prize', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis')), + ('billed', models.BooleanField(default=False, verbose_name='Abgerechnet')), + ('desk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Desk', verbose_name='Tisch')), + ], + options={ + 'verbose_name_plural': 'Buchhaltungseinträge', + 'verbose_name': 'Buchhaltungseintrag', + 'ordering': ['-time_from'], + }, + ), + ] diff --git a/billard/models.py b/billard/models.py index 41b50d3..1996249 100644 --- a/billard/models.py +++ b/billard/models.py @@ -84,14 +84,14 @@ class Desk(models.Model): class Accounting(models.Model): - client = models.ForeignKey(Client, verbose_name="Client") - desk_no = models.IntegerField(verbose_name="Tischnummer") + desk = models.ForeignKey(Desk, verbose_name="Tisch") time_from = models.DateTimeField(verbose_name="Beginn") time_to = models.DateTimeField(blank=True, null=True, verbose_name="Ende") prize = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name="Preis") + billed = models.BooleanField(default=False, verbose_name="Abgerechnet") def __str__(self): - return '{}: {} -> {}, {}'.format(self.client.uuid, self.time_from, self.time_to, self.prize) + return '{}: {} -> {}, {}, {}'.format(self.desk, self.time_from, self.time_to, self.prize, self.billed) class Meta: ordering = ['-time_from'] @@ -117,15 +117,14 @@ def process_location_data(): 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() + ac = desk.accounting_set.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, + desk=desk, time_from=ld.tst, ) acc.save() diff --git a/billard/templatetags/display_client.py b/billard/templatetags/display_client.py index 690164a..4e7f96c 100644 --- a/billard/templatetags/display_client.py +++ b/billard/templatetags/display_client.py @@ -17,12 +17,13 @@ def display_client(client, desk_no): return '' alert = 'alert-success' - acc = Accounting.objects.filter(client=client, desk_no=desk_no)[:3][::-1] + #acc = Accounting.objects.filter(client=client, desk_no=desk_no)[:3][::-1] + acc = desk.accounting_set.all()[:3][::-1] if acc is not None and len(acc) > 0: a = acc[-1] if a.time_to is None: alert = 'alert-info' - prize = utils.get_prize_for(start=a.time_from, end=datetime.now(timezone.utc), pph=desk.prize) + prize = utils.get_prize_for(start=a.time_from, end=datetime.now(), pph=desk.prize) prize = '{0:.2f}'.format(prize) if prize != a.prize: a.prize = prize @@ -34,7 +35,7 @@ def display_client(client, desk_no): html += ' \n' for a in acc: html += ' \n' - html += ' \n'.format(a.time_from) + html += ' \n'.format(a.time_from.strftime('%d.%m.%Y %H:%M:%S')) html += ' \n'.format((a.time_to if a.time_to is not None else '')) html += ' \n'\ .format((a.prize if a.prize is not None else '')) diff --git a/caromserver/settings.py b/caromserver/settings.py index df5161a..f4367ff 100644 --- a/caromserver/settings.py +++ b/caromserver/settings.py @@ -112,7 +112,7 @@ USE_I18N = True USE_L10N = True -USE_TZ = True +USE_TZ = False # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/
{}{}{}{}