diff --git a/billard/admin.py b/billard/admin.py index 4ec2686..22c7220 100644 --- a/billard/admin.py +++ b/billard/admin.py @@ -10,8 +10,8 @@ class LocationAdmin(admin.ModelAdmin): @admin.register(Client) class ClientAdmin(admin.ModelAdmin): - list_display = ('uuid', 'location', 'desk1_name', 'desk2_name') - fields = ['location', 'uuid', 'desk1_enable', 'desk1_name', 'desk1_prize_nt', 'desk1_prize_ht', 'desk2_enable', 'desk2_name', 'desk2_prize_nt', 'desk2_prize_ht', ] + list_display = ('uuid', 'location') + fields = ['location', 'uuid'] @admin.register(LocationData) diff --git a/billard/migrations/0008_auto_20170210_1947.py b/billard/migrations/0008_auto_20170210_1947.py new file mode 100644 index 0000000..b661151 --- /dev/null +++ b/billard/migrations/0008_auto_20170210_1947.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-02-10 19:47 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('billard', '0007_desk'), + ] + + operations = [ + migrations.RemoveField( + model_name='client', + name='desk1_enable', + ), + migrations.RemoveField( + model_name='client', + name='desk1_name', + ), + migrations.RemoveField( + model_name='client', + name='desk1_prize_ht', + ), + migrations.RemoveField( + model_name='client', + name='desk1_prize_nt', + ), + migrations.RemoveField( + model_name='client', + name='desk2_enable', + ), + migrations.RemoveField( + model_name='client', + name='desk2_name', + ), + migrations.RemoveField( + model_name='client', + name='desk2_prize_ht', + ), + migrations.RemoveField( + model_name='client', + name='desk2_prize_nt', + ), + migrations.AlterField( + model_name='desk', + name='client', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='desks', to='billard.Client', verbose_name='Client'), + ), + ] diff --git a/billard/models.py b/billard/models.py index b73489c..a8466c0 100644 --- a/billard/models.py +++ b/billard/models.py @@ -46,30 +46,6 @@ class Location(models.Model): class Client(models.Model): uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name="Identifier") location = models.ForeignKey(Location, verbose_name="Standort") - desk1_enable = models.BooleanField() - desk1_name = models.CharField(max_length=32, blank=True, null=True) - desk1_prize_nt = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True) - desk1_prize_ht = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True) - desk2_enable = models.BooleanField() - desk2_name = models.CharField(max_length=32, blank=True, null=True) - desk2_prize_nt = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True) - desk2_prize_ht = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True) - - def accounting_for(self, desk_no, pht, pnt): - t = Accounting.objects.filter(client_id=self.id, desk_no=desk_no)[:3][::-1] - if t.__len__() > 0: - a = t[t.__len__() - 1] - if a.time_to is None: - prize = utils.get_prize_for(start=a.time_from, end=datetime.now(timezone.utc), pph=pht) - if prize != a.prize: - a.prize = prize - return t - - def accounting_1(self): - return self.accounting_for(1, self.desk1_prize_ht, self.desk1_prize_nt) - - def accounting_2(self): - return self.accounting_for(2, self.desk2_prize_ht, self.desk2_prize_nt) def __str__(self): return '{}, {}'.format(self.location.name, self.uuid) @@ -80,7 +56,7 @@ class Client(models.Model): class Desk(models.Model): - client = models.ForeignKey(Client, verbose_name='Client') + client = models.ForeignKey(Client, verbose_name='Client', related_name='desks') desk_no = models.IntegerField(verbose_name='Tischnummer') name = models.CharField(max_length=32, blank=True, null=True, verbose_name='Tischbezeichnung') enabled = models.BooleanField(verbose_name='Tisch aktiv') diff --git a/billard/templates/billard/index.html b/billard/templates/billard/index.html index 1987f02..561299a 100644 --- a/billard/templates/billard/index.html +++ b/billard/templates/billard/index.html @@ -1,4 +1,5 @@ {% extends 'billard/base.html' %} +{% load display_client %} {% block header %} @@ -19,42 +20,7 @@ {% if clients %} {% for cli in clients %} -{% if cli.desk1_enable %} -
-
-

(1) {{ cli.desk1_name }}

-{% if cli.accounting_1 %} - -{% for acc in cli.accounting_1 %} - - - - - -{% endfor %} -
{{ acc.time_from|date:"d.m.Y H:i:s" }}{% if acc.time_to is not None %}{{ acc.time_to|date:"d.m.Y H:i:s" }}{% endif %}{% if acc.prize is not None %}{{ acc.prize|floatformat:2 }}{% endif %}
-{% endif %} -
-
-{% endif %} -{% if cli.desk2_enable %} -
-
-

(2) {{ cli.desk2_name }}

-{% if cli.accounting_2 %} - -{% for acc in cli.accounting_2 %} - - - - - -{% endfor %} -
{{ acc.time_from|date:"d.m.Y H:i:s" }}{% if acc.time_to is not None %}{{ acc.time_to|date:"d.m.Y H:i:s" }}{% endif %}{% if acc.prize is not None %}{{ acc.prize|floatformat:2 }}{% endif %}
-{% endif %} -
-
-{% endif %} +{% for i in range %} {{ cli|display_client:i }} {% endfor %} {% endfor %} {% else %}
diff --git a/billard/templatetags/__init__.py b/billard/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/billard/templatetags/display_client.py b/billard/templatetags/display_client.py new file mode 100644 index 0000000..cf5c723 --- /dev/null +++ b/billard/templatetags/display_client.py @@ -0,0 +1,48 @@ +from django import template +from django.utils.html import format_html +from billard.models import Desk, Accounting +from billard import utils +from datetime import datetime, timezone + +register = template.Library() + + +@register.filter(is_safe=True) +def display_client(client, desk_no): + desks = client.desks.filter(desk_no=desk_no) + if len(desks) == 0: + return '' + desk = desks[0] + if not desk.enabled: + return '' + + alert = 'alert-success' + acc = Accounting.objects.filter(client=client, desk_no=desk_no)[: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(), pph=desk.prize) + prize = '{0:.2f}'.format(prize) + if prize != a.prize: + a.prize = prize + + html = '
\n' + html += '
\n'.format(alert) + html += '

({}) {}

\n'.format(desk_no, desk.name) + if len(acc) > 0: + html += ' \n' + for a in acc: + html += ' \n' + html += ' \n'.format(a.time_from) + 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 '')) + html += ' \n' + html += ' \n' + html += ' \n' + html += '
{}{}{}
\n' + html += '
\n' + html += '
\n' + html = format_html(html) + return html diff --git a/billard/views.py b/billard/views.py index e4c5a75..305ec9c 100644 --- a/billard/views.py +++ b/billard/views.py @@ -55,7 +55,7 @@ def index(request): locations = Location.objects.filter(users__id=request.user.id).order_by('code') clients = Client.objects.filter(location_id=loc).order_by('id') context = { - 'range': range(1, 3), + 'range': range(1, 9), 'locations': locations, 'clients': clients, 'location_id': int(loc),