reformat code
This commit is contained in:
		| @@ -1,11 +1,10 @@ | ||||
| from django import forms | ||||
| from django.conf.urls import url | ||||
| from django.contrib import admin, messages | ||||
| from django.core.exceptions import ValidationError | ||||
| from django.shortcuts import redirect | ||||
| from django.template.response import TemplateResponse | ||||
|  | ||||
| from .models import * | ||||
| from django import forms | ||||
| from django.core.exceptions import ValidationError | ||||
|  | ||||
|  | ||||
| class LocationAdminForm(forms.ModelForm): | ||||
| @@ -26,7 +25,8 @@ class LocationAdminForm(forms.ModelForm): | ||||
| class LocationAdmin(admin.ModelAdmin): | ||||
|     form = LocationAdminForm | ||||
|     list_display = ('code', 'name', 'city', 'happy_hour_start', 'happy_hour_end') | ||||
|     fields = ['users', 'code', 'happy_hour_start', 'happy_hour_end', 'name', 'street', 'plz', 'city', 'phone', 'email', 'url', ] | ||||
|     fields = ['users', 'code', 'happy_hour_start', 'happy_hour_end', 'name', 'street', 'plz', 'city', 'phone', 'email', | ||||
|               'url', ] | ||||
|  | ||||
|  | ||||
| @admin.register(Client) | ||||
| @@ -40,13 +40,15 @@ class LocationDataAdmin(admin.ModelAdmin): | ||||
|     def get_urls(self): | ||||
|         urls = super().get_urls() | ||||
|         my_urls = [ | ||||
|             url(r'^process_locationdata/$', self.admin_site.admin_view(self.process_locationdata), name='process_locationdata'), | ||||
|             url(r'^process_locationdata/$', self.admin_site.admin_view(self.process_locationdata), | ||||
|                 name='process_locationdata'), | ||||
|         ] | ||||
|         return my_urls + urls | ||||
|  | ||||
|     def process_locationdata(self, request): | ||||
|         messages.success(request, 'Items processed.') | ||||
|         return redirect('admin:billard_locationdata_changelist') | ||||
|  | ||||
|     list_display = ('client_id', 'desk_no', 'tst', 'on_off', 'processed', 'error_msg') | ||||
|     fields = ['client_id', 'desk_no', 'tst', 'on_off', 'processed', 'error_msg'] | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     initial = True | ||||
|  | ||||
|     dependencies = [ | ||||
|   | ||||
| @@ -7,7 +7,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         migrations.swappable_dependency(settings.AUTH_USER_MODEL), | ||||
|         ('billard', '0001_initial'), | ||||
|   | ||||
| @@ -2,13 +2,13 @@ | ||||
| # Generated by Django 1.10.5 on 2017-02-04 05:48 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| import uuid | ||||
|  | ||||
| import django.db.models.deletion | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0002_location'), | ||||
|     ] | ||||
|   | ||||
| @@ -2,12 +2,11 @@ | ||||
| # Generated by Django 1.10.5 on 2017-02-04 10:17 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0003_client'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0004_accounting'), | ||||
|     ] | ||||
|   | ||||
| @@ -2,14 +2,14 @@ | ||||
| # Generated by Django 1.10.5 on 2017-02-06 19:31 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import uuid | ||||
|  | ||||
| import django.db.models.deletion | ||||
| from django.conf import settings | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| import uuid | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0005_auto_20170206_1926'), | ||||
|     ] | ||||
| @@ -17,7 +17,8 @@ class Migration(migrations.Migration): | ||||
|     operations = [ | ||||
|         migrations.AlterModelOptions( | ||||
|             name='accounting', | ||||
|             options={'ordering': ['-time_from'], 'verbose_name': 'Buchhaltungseintrag', 'verbose_name_plural': 'Buchhaltungseinträge'}, | ||||
|             options={'ordering': ['-time_from'], 'verbose_name': 'Buchhaltungseintrag', | ||||
|                      'verbose_name_plural': 'Buchhaltungseinträge'}, | ||||
|         ), | ||||
|         migrations.AlterModelOptions( | ||||
|             name='client', | ||||
| @@ -34,7 +35,8 @@ class Migration(migrations.Migration): | ||||
|         migrations.AlterField( | ||||
|             model_name='accounting', | ||||
|             name='client', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Client', verbose_name='Client'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Client', | ||||
|                                     verbose_name='Client'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='accounting', | ||||
| @@ -59,7 +61,8 @@ class Migration(migrations.Migration): | ||||
|         migrations.AlterField( | ||||
|             model_name='client', | ||||
|             name='location', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Location', verbose_name='Standort'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Location', | ||||
|                                     verbose_name='Standort'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='client', | ||||
| @@ -109,7 +112,8 @@ class Migration(migrations.Migration): | ||||
|         migrations.AlterField( | ||||
|             model_name='location', | ||||
|             name='users', | ||||
|             field=models.ManyToManyField(related_name='locations', to=settings.AUTH_USER_MODEL, verbose_name='Benutzer'), | ||||
|             field=models.ManyToManyField(related_name='locations', to=settings.AUTH_USER_MODEL, | ||||
|                                          verbose_name='Benutzer'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='locationdata', | ||||
|   | ||||
| @@ -2,12 +2,11 @@ | ||||
| # Generated by Django 1.10.5 on 2017-02-10 18:30 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0006_auto_20170206_2031'), | ||||
|     ] | ||||
| @@ -20,9 +19,12 @@ class Migration(migrations.Migration): | ||||
|                 ('desk_no', models.IntegerField(verbose_name='Tischnummer')), | ||||
|                 ('name', models.CharField(blank=True, max_length=32, null=True, verbose_name='Tischbezeichnung')), | ||||
|                 ('enabled', models.BooleanField(verbose_name='Tisch aktiv')), | ||||
|                 ('prize', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Normelpreis')), | ||||
|                 ('prize_hh', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis Happy Hour')), | ||||
|                 ('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Client', verbose_name='Client')), | ||||
|                 ('prize', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, | ||||
|                                               verbose_name='Normelpreis')), | ||||
|                 ('prize_hh', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, | ||||
|                                                  verbose_name='Preis Happy Hour')), | ||||
|                 ('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Client', | ||||
|                                              verbose_name='Client')), | ||||
|             ], | ||||
|             options={ | ||||
|                 'verbose_name_plural': 'Tische', | ||||
|   | ||||
| @@ -2,12 +2,11 @@ | ||||
| # 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 | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0007_desk'), | ||||
|     ] | ||||
| @@ -48,6 +47,7 @@ class Migration(migrations.Migration): | ||||
|         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'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='desks', | ||||
|                                     to='billard.Client', verbose_name='Client'), | ||||
|         ), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0008_auto_20170210_1947'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0009_auto_20170210_1955'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0010_auto_20170210_2040'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0011_auto_20170210_2122'), | ||||
|     ] | ||||
|   | ||||
| @@ -2,12 +2,11 @@ | ||||
| # 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 | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0012_auto_20170211_1003'), | ||||
|     ] | ||||
| @@ -19,9 +18,11 @@ class Migration(migrations.Migration): | ||||
|                 ('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')), | ||||
|                 ('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')), | ||||
|                 ('desk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='billard.Desk', | ||||
|                                            verbose_name='Tisch')), | ||||
|             ], | ||||
|             options={ | ||||
|                 'verbose_name_plural': 'Buchhaltungseinträge', | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0013_accounting'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0014_auto_20170211_2008'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0015_auto_20170222_1023'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0016_auto_20170225_1822'), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0016_auto_20170225_1822'), | ||||
|     ] | ||||
|   | ||||
| @@ -2,13 +2,12 @@ | ||||
| # Generated by Django 1.10.5 on 2017-03-02 20:58 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import django.db.models.deletion | ||||
| from django.conf import settings | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         migrations.swappable_dependency(settings.AUTH_USER_MODEL), | ||||
|         ('billard', '0017_accounting_reporter_uuid'), | ||||
| @@ -18,16 +17,20 @@ class Migration(migrations.Migration): | ||||
|         migrations.AddField( | ||||
|             model_name='accounting', | ||||
|             name='prize_hh', | ||||
|             field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis Happy Hour'), | ||||
|             field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, | ||||
|                                       verbose_name='Preis Happy Hour'), | ||||
|         ), | ||||
|         migrations.AddField( | ||||
|             model_name='accounting', | ||||
|             name='prize_normal', | ||||
|             field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis Normalzeit'), | ||||
|             field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, | ||||
|                                       verbose_name='Preis Normalzeit'), | ||||
|         ), | ||||
|         migrations.AddField( | ||||
|             model_name='client', | ||||
|             name='report_user', | ||||
|             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reporting_clients', to=settings.AUTH_USER_MODEL, verbose_name='Reporting Benutzer'), | ||||
|             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, | ||||
|                                     related_name='reporting_clients', to=settings.AUTH_USER_MODEL, | ||||
|                                     verbose_name='Reporting Benutzer'), | ||||
|         ), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0018_auto_20170302_2058'), | ||||
|         ('billard', '0017_auto_20170302_1610'), | ||||
|   | ||||
| @@ -4,6 +4,7 @@ from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations | ||||
|  | ||||
|  | ||||
| def create_default_groups_permissions(apps, schema_editor): | ||||
|     # We can't import the Person model directly as it may be a newer | ||||
|     # version than this migration expects. We use the historical version. | ||||
| @@ -16,6 +17,7 @@ def create_default_groups_permissions(apps, schema_editor): | ||||
|     ag.save() | ||||
|     ag.permissions.add(Permission.objects.get(codename="change_accounting")) | ||||
|  | ||||
|  | ||||
| def delete_default_groups_permissions(apps, schema_editor): | ||||
|     Group = apps.get_model("auth", "Group") | ||||
|     Group.objects.get(name='Location').delete() | ||||
| @@ -23,7 +25,6 @@ def delete_default_groups_permissions(apps, schema_editor): | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0019_merge_20170310_1941'), | ||||
|         ('sessions', '0001_initial'), | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0020_auto_20170410_1853'), | ||||
|     ] | ||||
|   | ||||
| @@ -2,12 +2,11 @@ | ||||
| # Generated by Django 1.11 on 2017-04-27 08:35 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0021_accounting_account_user'), | ||||
|     ] | ||||
| @@ -16,6 +15,7 @@ class Migration(migrations.Migration): | ||||
|         migrations.AlterField( | ||||
|             model_name='client', | ||||
|             name='location', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clients', to='billard.Location', verbose_name='Standort'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clients', | ||||
|                                     to='billard.Location', verbose_name='Standort'), | ||||
|         ), | ||||
|     ] | ||||
|   | ||||
| @@ -6,7 +6,6 @@ from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0022_auto_20170427_0835'), | ||||
|     ] | ||||
|   | ||||
| @@ -1,12 +1,11 @@ | ||||
| # Generated by Django 2.0.2 on 2018-02-10 11:05 | ||||
|  | ||||
| import django.db.models.deletion | ||||
| from django.conf import settings | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('billard', '0023_accounting_account_tst'), | ||||
|     ] | ||||
| @@ -15,21 +14,26 @@ class Migration(migrations.Migration): | ||||
|         migrations.AlterField( | ||||
|             model_name='accounting', | ||||
|             name='desk', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='billard.Desk', verbose_name='Tisch'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='billard.Desk', | ||||
|                                     verbose_name='Tisch'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='client', | ||||
|             name='location', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='clients', to='billard.Location', verbose_name='Standort'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='clients', | ||||
|                                     to='billard.Location', verbose_name='Standort'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='client', | ||||
|             name='report_user', | ||||
|             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='reporting_clients', to=settings.AUTH_USER_MODEL, verbose_name='Reporting Benutzer'), | ||||
|             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, | ||||
|                                     related_name='reporting_clients', to=settings.AUTH_USER_MODEL, | ||||
|                                     verbose_name='Reporting Benutzer'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='desk', | ||||
|             name='client', | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='desks', to='billard.Client', verbose_name='Client'), | ||||
|             field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='desks', | ||||
|                                     to='billard.Client', verbose_name='Client'), | ||||
|         ), | ||||
|     ] | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| import uuid | ||||
| import logging | ||||
| import uuid | ||||
|  | ||||
| from django.contrib.auth.models import User | ||||
| from django.contrib.auth.models import User | ||||
| from django.db import models | ||||
| from django.contrib.auth.models import User | ||||
| from django.contrib.auth.models import User | ||||
| from django.db.models.signals import post_save | ||||
| from django.dispatch import receiver | ||||
|  | ||||
| @@ -49,7 +50,8 @@ class Location(models.Model): | ||||
| class Client(models.Model): | ||||
|     uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name="Identifier") | ||||
|     location = models.ForeignKey(Location, related_name="clients", verbose_name="Standort", on_delete=models.DO_NOTHING) | ||||
|     report_user = models.ForeignKey(User, blank=True, null=True, verbose_name="Reporting Benutzer", related_name='reporting_clients', on_delete=models.DO_NOTHING) | ||||
|     report_user = models.ForeignKey(User, blank=True, null=True, verbose_name="Reporting Benutzer", | ||||
|                                     related_name='reporting_clients', on_delete=models.DO_NOTHING) | ||||
|  | ||||
|     def __str__(self): | ||||
|         return '{}, {}'.format(self.location.name, self.uuid) | ||||
| @@ -83,8 +85,10 @@ class Accounting(models.Model): | ||||
|     prize = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, verbose_name="Preis") | ||||
|     billed = models.BooleanField(default=False, verbose_name="Abgerechnet") | ||||
|     reporter_uuid = models.UUIDField(blank=True, null=True, verbose_name='Reporter UUID') | ||||
|     prize_normal = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name="Preis Normalzeit") | ||||
|     prize_hh = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name="Preis Happy Hour") | ||||
|     prize_normal = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, | ||||
|                                        verbose_name="Preis Normalzeit") | ||||
|     prize_hh = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, | ||||
|                                    verbose_name="Preis Happy Hour") | ||||
|     account_user = models.CharField(blank=True, null=True, max_length=128, verbose_name="Abr. Benutzer") | ||||
|     account_tst = models.DateTimeField(blank=True, null=True, verbose_name="Abr. TST") | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| from billard.models import LocationData | ||||
| from rest_framework import serializers | ||||
|  | ||||
| from billard.models import LocationData | ||||
|  | ||||
|  | ||||
| class LocationDataSerializer(serializers.HyperlinkedModelSerializer): | ||||
|     class Meta: | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| from __future__ import absolute_import, unicode_literals | ||||
|  | ||||
| import logging | ||||
| import billard.utils as utils | ||||
|  | ||||
| import billard.utils as utils | ||||
| from billard.models import LocationData, Client, Accounting | ||||
|  | ||||
| log = logging.getLogger(__name__) | ||||
| @@ -58,7 +58,8 @@ def process_location_data(): | ||||
|                         ld.delete() | ||||
|                     else: | ||||
|                         ld.processed = True | ||||
|                         ld.error_msg = 'No existing accountings found. Stopp processing! {}, {}'.format(ld.client_id, ld.desk_no) | ||||
|                         ld.error_msg = 'No existing accountings found. Stopp processing! {}, {}'.format(ld.client_id, | ||||
|                                                                                                         ld.desk_no) | ||||
|                         ld.save() | ||||
|                         log.error(ld.error_msg) | ||||
|         except: | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| {% extends "admin/change_list.html" %} | ||||
| {% load i18n admin_urls static admin_list %} | ||||
| {% block object-tools-items %} | ||||
| <li> | ||||
|   <a href="{% url 'admin:process_locationdata' %}"> | ||||
|       LD Verarbeiten | ||||
|   </a> | ||||
| </li> | ||||
| {{ block.super }} | ||||
|     <li> | ||||
|         <a href="{% url 'admin:process_locationdata' %}"> | ||||
|             LD Verarbeiten | ||||
|         </a> | ||||
|     </li> | ||||
|     {{ block.super }} | ||||
| {% endblock %} | ||||
| @@ -4,9 +4,9 @@ | ||||
| {% block title %}Abrechnung{% endblock %} | ||||
|  | ||||
| {% block breadcrumb %} | ||||
|   <li class="breadcrumb-item"><a href="{% url 'billard:location_index' %}">Standorte</a></li> | ||||
|   <li class="breadcrumb-item"><a href="{% url 'billard:location_detail' location.id %}">{{ location.code }}</a></li> | ||||
|   <li class="breadcrumb-item active">Abrechnung</li> | ||||
|     <li class="breadcrumb-item"><a href="{% url 'billard:location_index' %}">Standorte</a></li> | ||||
|     <li class="breadcrumb-item"><a href="{% url 'billard:location_detail' location.id %}">{{ location.code }}</a></li> | ||||
|     <li class="breadcrumb-item active">Abrechnung</li> | ||||
| {% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
| @@ -23,19 +23,19 @@ | ||||
|             <th>Preis Happy Hour:</th> | ||||
|             <th>Preis gesamt:</th> | ||||
|         </tr> | ||||
| {% for acc in accounting %} | ||||
|         <tr> | ||||
|             <td>{{ acc.time_from }}</td> | ||||
|             <td>{{ acc.time_to }}</td> | ||||
|             <td>{{ acc.prize_normal }}</td> | ||||
|             <td>{{ acc.prize_hh }}</td> | ||||
|             <td>{{ acc.prize }}</td> | ||||
|         </tr> | ||||
| {% endfor %} | ||||
|         {% for acc in accounting %} | ||||
|             <tr> | ||||
|                 <td>{{ acc.time_from }}</td> | ||||
|                 <td>{{ acc.time_to }}</td> | ||||
|                 <td>{{ acc.prize_normal }}</td> | ||||
|                 <td>{{ acc.prize_hh }}</td> | ||||
|                 <td>{{ acc.prize }}</td> | ||||
|             </tr> | ||||
|         {% endfor %} | ||||
|     </table> | ||||
|  | ||||
|     <form action="confirm/" method="post" id="accounting"> | ||||
| {% csrf_token %} | ||||
|         {% csrf_token %} | ||||
|         <input type="hidden" name="location-selector" value="{{ location_id }}"> | ||||
|         <input type="hidden" name="accountings" value="{{ acc_ids }}"> | ||||
|         <button type="submit" class="btn btn-default">Abrechnen</button> | ||||
|   | ||||
| @@ -1,36 +1,37 @@ | ||||
| {% if accounts %} | ||||
| <div id="accountsmodal" class="modal" tabindex="-1" role="dialog"> | ||||
|   <div class="modal-dialog" role="document"> | ||||
|     <div class="modal-content"> | ||||
|       <div class="modal-header"> | ||||
|         <h4 class="modal-title">Abrechnung</h4> | ||||
|       </div> | ||||
|       <div class="modal-body"> | ||||
|         <table class="table table-striped"> | ||||
|             <thead> | ||||
|             <tr> | ||||
|                 <td>Tisch #</td> | ||||
|                 <td>Tisch Name</td> | ||||
|                 <td class="text-right">Normalpreis</td> | ||||
|                 <td class="text-right">Preis HH</td> | ||||
|                 <td class="text-right">Gesamt</td> | ||||
|             </tr> | ||||
|             </thead> | ||||
|             {% for account in accounts %} | ||||
|           <tr> | ||||
|               <td>{{ account.desk.desk_no }}</td> | ||||
|               <td>{{ account.desk.name }}</td> | ||||
|               <td class="text-right">{{ account.prize_normal }}</td> | ||||
|               <td class="text-right">{{ account.prize_hh }}</td> | ||||
|               <td class="text-right"><strong>{{ account.prize }}</strong></td> | ||||
|           </tr> | ||||
|             {% endfor %} | ||||
|         </table> | ||||
|       </div> | ||||
|       <div class="modal-footer"> | ||||
|         <a class="btn btn-default btn-primary" href="{% url 'billard:account_modal_confirm' pks=pks loc_pk=loc_pk %}">Schliessen</a> | ||||
|       </div> | ||||
|     </div><!-- /.modal-content --> | ||||
|   </div><!-- /.modal-dialog --> | ||||
| </div><!-- /.modal --> | ||||
|     <div id="accountsmodal" class="modal" tabindex="-1" role="dialog"> | ||||
|         <div class="modal-dialog" role="document"> | ||||
|             <div class="modal-content"> | ||||
|                 <div class="modal-header"> | ||||
|                     <h4 class="modal-title">Abrechnung</h4> | ||||
|                 </div> | ||||
|                 <div class="modal-body"> | ||||
|                     <table class="table table-striped"> | ||||
|                         <thead> | ||||
|                         <tr> | ||||
|                             <td>Tisch #</td> | ||||
|                             <td>Tisch Name</td> | ||||
|                             <td class="text-right">Normalpreis</td> | ||||
|                             <td class="text-right">Preis HH</td> | ||||
|                             <td class="text-right">Gesamt</td> | ||||
|                         </tr> | ||||
|                         </thead> | ||||
|                         {% for account in accounts %} | ||||
|                             <tr> | ||||
|                                 <td>{{ account.desk.desk_no }}</td> | ||||
|                                 <td>{{ account.desk.name }}</td> | ||||
|                                 <td class="text-right">{{ account.prize_normal }}</td> | ||||
|                                 <td class="text-right">{{ account.prize_hh }}</td> | ||||
|                                 <td class="text-right"><strong>{{ account.prize }}</strong></td> | ||||
|                             </tr> | ||||
|                         {% endfor %} | ||||
|                     </table> | ||||
|                 </div> | ||||
|                 <div class="modal-footer"> | ||||
|                     <a class="btn btn-default btn-primary" | ||||
|                        href="{% url 'billard:account_modal_confirm' pks=pks loc_pk=loc_pk %}">Schliessen</a> | ||||
|                 </div> | ||||
|             </div><!-- /.modal-content --> | ||||
|         </div><!-- /.modal-dialog --> | ||||
|     </div><!-- /.modal --> | ||||
| {% endif %} | ||||
| @@ -4,24 +4,25 @@ | ||||
| {% block title %}Location Data{% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
| {% if not locations|length_is:"1" %} | ||||
|     <form action="." method="post" id="location-form"> | ||||
| {% csrf_token %} | ||||
|         <div id="location-selector" class="alert"> | ||||
|             <select class="form-control" form="location-form" name="location-selector" id="location-select"> | ||||
| {% for loc in locations %} | ||||
|                 <option value="{{ loc.id }}"{%  if loc.id == location_id %} selected{% endif %}>{{ loc.code }} - {{ loc.name }}</option> | ||||
| {% endfor %} | ||||
|             </select> | ||||
|         </div> | ||||
|     </form> | ||||
| {% endif %} | ||||
|     {% if not locations|length_is:"1" %} | ||||
|         <form action="." method="post" id="location-form"> | ||||
|             {% csrf_token %} | ||||
|             <div id="location-selector" class="alert"> | ||||
|                 <select class="form-control" form="location-form" name="location-selector" id="location-select"> | ||||
|                     {% for loc in locations %} | ||||
|                         <option value="{{ loc.id }}"{% if loc.id == location_id %} selected{% endif %}>{{ loc.code }} | ||||
|                             - {{ loc.name }}</option> | ||||
|                     {% endfor %} | ||||
|                 </select> | ||||
|             </div> | ||||
|         </form> | ||||
|     {% endif %} | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     <div id="desk_data"> | ||||
| {% include 'billard/index_ajax.html' %} | ||||
|         {% include 'billard/index_ajax.html' %} | ||||
|     </div> | ||||
|     <div id="modal-wrapper"> | ||||
|     </div> | ||||
| @@ -29,20 +30,20 @@ | ||||
|  | ||||
| {% block js %} | ||||
|     <script type="text/javascript"> | ||||
|     var interval; | ||||
| $(document).ready(function() { | ||||
|     $.ajaxSetup({ cache: false }); | ||||
|     interval = window.setInterval(refresh_page, 1000); | ||||
| }); | ||||
|         var interval; | ||||
|         $(document).ready(function () { | ||||
|             $.ajaxSetup({cache: false}); | ||||
|             interval = window.setInterval(refresh_page, 1000); | ||||
|         }); | ||||
|  | ||||
| function refresh_page() { | ||||
|     $('#desk_data').load('#'); | ||||
|     $('#modal-wrapper').load('{% url 'accountmodal' %}', function() { | ||||
|         if ( $('#accountsmodal').length ) { | ||||
|             window.clearInterval(interval); | ||||
|             $('#accountsmodal').modal('show'); | ||||
|         function refresh_page() { | ||||
|             $('#desk_data').load('#'); | ||||
|             $('#modal-wrapper').load('{% url 'accountmodal' %}', function () { | ||||
|                 if ($('#accountsmodal').length) { | ||||
|                     window.clearInterval(interval); | ||||
|                     $('#accountsmodal').modal('show'); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| </script> | ||||
|     </script> | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| {% load display_client %} | ||||
| {% if clients %} | ||||
| {% for cli in clients %} | ||||
| {% for i in range %} {{ cli|display_client:i }} {% endfor %} | ||||
| {% endfor %} | ||||
|     {% for cli in clients %} | ||||
|         {% for i in range %} {{ cli|display_client:i }} {% endfor %} | ||||
|     {% endfor %} | ||||
| {% else %} | ||||
| <div class="col-md-12"> | ||||
|     <div class="col-md-12 alert alert-danger">Keine Tische angelegt!</div> | ||||
| </div> | ||||
|     <div class="col-md-12"> | ||||
|         <div class="col-md-12 alert alert-danger">Keine Tische angelegt!</div> | ||||
|     </div> | ||||
| {% endif %} | ||||
| @@ -1,12 +1,12 @@ | ||||
| {% load display_client %} | ||||
| {% if location.clients.all %} | ||||
| {% for cli in location.clients.all %} | ||||
| {% for i in "12345678" %} | ||||
|     {{ cli|display_client:i }} | ||||
| {% endfor %} | ||||
| {% endfor %} | ||||
|     {% for cli in location.clients.all %} | ||||
|         {% for i in "12345678" %} | ||||
|             {{ cli|display_client:i }} | ||||
|         {% endfor %} | ||||
|     {% endfor %} | ||||
| {% else %} | ||||
| <div class="col"> | ||||
|     <div class="alert alert-danger">Keine Tische angelegt!</div> | ||||
| </div> | ||||
|     <div class="col"> | ||||
|         <div class="alert alert-danger">Keine Tische angelegt!</div> | ||||
|     </div> | ||||
| {% endif %} | ||||
|   | ||||
| @@ -3,39 +3,41 @@ | ||||
| {% block title %}Standortliste{% endblock %} | ||||
|  | ||||
| {% block breadcrumb %} | ||||
|   <li class="breadcrumb-item active">Standorte</li> | ||||
|     <li class="breadcrumb-item active">Standorte</li> | ||||
| {% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
|  | ||||
| {% if location_list %} | ||||
|     <h2>Bitte Standort auswählen:</h2> | ||||
|     <table class="table table-hover"> | ||||
|         <tr> | ||||
|             <th>Code</th> | ||||
|             <th>Name</th> | ||||
|             <th>Strasse</th> | ||||
|             <th>Plz</th> | ||||
|             <th>Ort</th> | ||||
| {% if perms.billard.change_accounting %} | ||||
|             <th>Accounting</th> | ||||
| {% endif %} | ||||
|         </tr> | ||||
| {% for loc in location_list %} | ||||
|         <tr> | ||||
|             <td><a href="{% url 'billard:location_detail' loc.id %}" class="btn btn-outline-primary btn-sm">{{ loc.code|default_if_none:"" }}</a></td> | ||||
|             <td>{{ loc.name|default_if_none:"" }}</td> | ||||
|             <td>{{ loc.street|default_if_none:"" }}</td> | ||||
|             <td>{{ loc.plz|default_if_none:"" }}</td> | ||||
|             <td>{{ loc.city|default_if_none:"" }}</td> | ||||
| {% if perms.billard.change_accounting %} | ||||
|             <td><a href="{% url 'billard:accounting_detail' loc.id %}" class="btn btn-outline-danger btn-sm">Abrechnen</a></td> | ||||
| {% endif %} | ||||
|         </tr> | ||||
| {% endfor %} | ||||
|     </table> | ||||
| {% else %} | ||||
|     <p>Keine Standorte Zugeordnet.</p> | ||||
| {% endif %} | ||||
|     {% if location_list %} | ||||
|         <h2>Bitte Standort auswählen:</h2> | ||||
|         <table class="table table-hover"> | ||||
|             <tr> | ||||
|                 <th>Code</th> | ||||
|                 <th>Name</th> | ||||
|                 <th>Strasse</th> | ||||
|                 <th>Plz</th> | ||||
|                 <th>Ort</th> | ||||
|                 {% if perms.billard.change_accounting %} | ||||
|                     <th>Accounting</th> | ||||
|                 {% endif %} | ||||
|             </tr> | ||||
|             {% for loc in location_list %} | ||||
|                 <tr> | ||||
|                     <td><a href="{% url 'billard:location_detail' loc.id %}" | ||||
|                            class="btn btn-outline-primary btn-sm">{{ loc.code|default_if_none:"" }}</a></td> | ||||
|                     <td>{{ loc.name|default_if_none:"" }}</td> | ||||
|                     <td>{{ loc.street|default_if_none:"" }}</td> | ||||
|                     <td>{{ loc.plz|default_if_none:"" }}</td> | ||||
|                     <td>{{ loc.city|default_if_none:"" }}</td> | ||||
|                     {% if perms.billard.change_accounting %} | ||||
|                         <td><a href="{% url 'billard:accounting_detail' loc.id %}" | ||||
|                                class="btn btn-outline-danger btn-sm">Abrechnen</a></td> | ||||
|                     {% endif %} | ||||
|                 </tr> | ||||
|             {% endfor %} | ||||
|         </table> | ||||
|     {% else %} | ||||
|         <p>Keine Standorte Zugeordnet.</p> | ||||
|     {% endif %} | ||||
|  | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -3,13 +3,15 @@ | ||||
| {% block title %}Location Data{% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
|    {% include 'billard/locationdata_detail_ajax.html' %} | ||||
|     {% include 'billard/locationdata_detail_ajax.html' %} | ||||
| {% endblock %} | ||||
|  | ||||
| {% block js %} | ||||
|     <script type="text/javascript"> | ||||
| $( document ).ready(function() { | ||||
| setInterval(function(){$( "#content" ).load( "#")},1000); | ||||
| }); | ||||
| </script> | ||||
|         $(document).ready(function () { | ||||
|             setInterval(function () { | ||||
|                 $("#content").load("#") | ||||
|             }, 1000); | ||||
|         }); | ||||
|     </script> | ||||
| {% endblock %} | ||||
| @@ -3,13 +3,15 @@ | ||||
| {% block title %}Location Data{% endblock %} | ||||
|  | ||||
| {% block content %} | ||||
| {% include 'billard/locationdata_list_ajax.html' %} | ||||
|     {% include 'billard/locationdata_list_ajax.html' %} | ||||
| {% endblock %} | ||||
|  | ||||
| {% block js %} | ||||
|     <script type="text/javascript"> | ||||
| $( document ).ready(function() { | ||||
| setInterval(function(){$( "#content" ).load( "#")},1000); | ||||
| }); | ||||
| </script> | ||||
|         $(document).ready(function () { | ||||
|             setInterval(function () { | ||||
|                 $("#content").load("#") | ||||
|             }, 1000); | ||||
|         }); | ||||
|     </script> | ||||
| {% endblock %} | ||||
| @@ -10,33 +10,33 @@ | ||||
|         </select> | ||||
|     </div> | ||||
|  | ||||
| {% if object_list %} | ||||
|     <h1>Location Data</h1> | ||||
|     <table class="table table-hover"> | ||||
|         <tr> | ||||
|             <th>ID</th> | ||||
|             <th>Location</th> | ||||
|             <th>Table</th> | ||||
|             <th>Timestamp</th> | ||||
|             <th>On_Off</th> | ||||
|             <th>Proc</th> | ||||
|             <th>Error</th> | ||||
|         </tr> | ||||
|     {% for location_data in object_list %} | ||||
|         <tr> | ||||
|             <td><a href="{% url 'detail' location_data.id %}">{{ location_data.id }}</a></td> | ||||
|             <td>{{ location_data.location_id }}</td> | ||||
|             <td>{{ location_data.table_no }}</td> | ||||
|             <td>{{ location_data.tst }}</td> | ||||
|             <td>{{ location_data.on_off }}</td> | ||||
|             <td>{{ location_data.processed }}</td> | ||||
|             <td>{{ location_data.error_msg }}</td> | ||||
|         </tr> | ||||
|     {% endfor %} | ||||
|     </table> | ||||
| {% else %} | ||||
|     <p>No data available.</p> | ||||
| {% endif %} | ||||
|     {% if object_list %} | ||||
|         <h1>Location Data</h1> | ||||
|         <table class="table table-hover"> | ||||
|             <tr> | ||||
|                 <th>ID</th> | ||||
|                 <th>Location</th> | ||||
|                 <th>Table</th> | ||||
|                 <th>Timestamp</th> | ||||
|                 <th>On_Off</th> | ||||
|                 <th>Proc</th> | ||||
|                 <th>Error</th> | ||||
|             </tr> | ||||
|             {% for location_data in object_list %} | ||||
|                 <tr> | ||||
|                     <td><a href="{% url 'detail' location_data.id %}">{{ location_data.id }}</a></td> | ||||
|                     <td>{{ location_data.location_id }}</td> | ||||
|                     <td>{{ location_data.table_no }}</td> | ||||
|                     <td>{{ location_data.tst }}</td> | ||||
|                     <td>{{ location_data.on_off }}</td> | ||||
|                     <td>{{ location_data.processed }}</td> | ||||
|                     <td>{{ location_data.error_msg }}</td> | ||||
|                 </tr> | ||||
|             {% endfor %} | ||||
|         </table> | ||||
|     {% else %} | ||||
|         <p>No data available.</p> | ||||
|     {% endif %} | ||||
| {% endblock %} | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| from datetime import datetime | ||||
|  | ||||
| from django import template | ||||
| from django.utils.html import format_html | ||||
|  | ||||
| from billard import utils | ||||
| from datetime import datetime | ||||
|  | ||||
| register = template.Library() | ||||
|  | ||||
| @@ -36,15 +38,15 @@ def display_client(client, desk_no): | ||||
|     html += '    <div class="table-info alert {}">\n'.format(alert) | ||||
|     html += '        <h4 style="text-align: center">({}) {}</h4>\n'.format(desk_no, desk.name) | ||||
|     if loc.happy_hour_start is not None and desk.prize_hh is not None: | ||||
|         html += '        <h6 style="text-align: center">Preis: {:.2f} € / Stunde | {} - {}: {:.2f} / € Stunde</h6>\n'\ | ||||
|         html += '        <h6 style="text-align: center">Preis: {:.2f} € / Stunde | {} - {}: {:.2f} / € Stunde</h6>\n' \ | ||||
|             .format( | ||||
|                 desk.prize, | ||||
|                 loc.happy_hour_start.strftime('%H:%M'), | ||||
|                 loc.happy_hour_end.strftime('%H:%M'), | ||||
|                 desk.prize_hh,) | ||||
|             desk.prize, | ||||
|             loc.happy_hour_start.strftime('%H:%M'), | ||||
|             loc.happy_hour_end.strftime('%H:%M'), | ||||
|             desk.prize_hh, ) | ||||
|     else: | ||||
|         html += '        <h6 style="text-align: center">Preis: {0:.2f} / Stunde</h6>\n'.format( | ||||
|             desk.prize,) | ||||
|             desk.prize, ) | ||||
|     if len(acc) > 0: | ||||
|         html += '        <table class="table">\n' | ||||
|         for a in acc: | ||||
| @@ -52,7 +54,7 @@ def display_client(client, desk_no): | ||||
|             html += '                <td>{}</td>\n'.format(a.time_from.strftime('%d.%m.%Y %H:%M:%S')) | ||||
|             html += '                <td>{}</td>\n'.format( | ||||
|                 (a.time_to.strftime('%d.%m.%Y %H:%M:%S') if a.time_to is not None else '')) | ||||
|             html += '                <td style="text-align: center;">{}</td>\n'\ | ||||
|             html += '                <td style="text-align: center;">{}</td>\n' \ | ||||
|                 .format((a.prize if a.prize is not None else '')) | ||||
|             html += '            <tr>\n' | ||||
|             html += '            <tr>\n' | ||||
|   | ||||
| @@ -38,7 +38,7 @@ class PrizeCalculationTestCase(TestCase): | ||||
|  | ||||
|  | ||||
| class PrizeGetTestCase(TestCase): | ||||
|     def get_prize_for(self, start, end, pph=0, hh_start=None, hh_end=None, pphh=0, expected=(0,0,0)): | ||||
|     def get_prize_for(self, start, end, pph=0, hh_start=None, hh_end=None, pphh=0, expected=(0, 0, 0)): | ||||
|         self.assertEqual(get_prize_for(start, end, pph, hh_start, hh_end, pphh), expected) | ||||
|  | ||||
|     def test_gpf_1(self): | ||||
| @@ -109,4 +109,4 @@ class PrizeGetTestCase(TestCase): | ||||
|         pph = 10 | ||||
|         pphh = 5 | ||||
|         expected = (7.5, 5, 2.5) | ||||
|         self.get_prize_for(start, end, pph, hh_start, hh_end, pphh, expected) | ||||
|         self.get_prize_for(start, end, pph, hh_start, hh_end, pphh, expected) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| from datetime import datetime, date, time, timedelta | ||||
| from datetime import datetime, date, timedelta | ||||
|  | ||||
|  | ||||
| def get_prize_for(start, end, pph=0, hh_start=None, hh_end=None, pphh=0): | ||||
|   | ||||
| @@ -1,18 +1,18 @@ | ||||
| import ast | ||||
| import logging | ||||
|  | ||||
| from billard.serializers import LocationDataSerializer | ||||
| from billard.models import LocationData, Location, Client, Accounting | ||||
| from billard.tasks import process_location_data | ||||
| from rest_framework import viewsets | ||||
| from django.shortcuts import render, redirect | ||||
| from django.views import generic | ||||
| from django.contrib.auth.decorators import login_required, permission_required | ||||
| from django.db.models import Sum | ||||
| from django.http import HttpResponse | ||||
| from django.utils.decorators import method_decorator | ||||
| from django.shortcuts import render, redirect | ||||
| from django.utils import timezone | ||||
| from django.utils.decorators import method_decorator | ||||
| from django.views import generic | ||||
| from rest_framework import viewsets | ||||
|  | ||||
| from billard.models import LocationData, Location, Client, Accounting | ||||
| from billard.serializers import LocationDataSerializer | ||||
| from billard.tasks import process_location_data | ||||
|  | ||||
| log = logging.getLogger(__name__) | ||||
|  | ||||
| @@ -47,7 +47,7 @@ class AccountingView(generic.ListView): | ||||
|     context_object_name = 'accounting' | ||||
|  | ||||
|     def get_queryset(self): | ||||
|         return Accounting.objects.filter(billed=False).filter(desk__client__location_id=self.kwargs['pk'])\ | ||||
|         return Accounting.objects.filter(billed=False).filter(desk__client__location_id=self.kwargs['pk']) \ | ||||
|             .exclude(time_to__isnull=True).order_by('time_from') | ||||
|  | ||||
|     def dispatch(self, request, *args, **kwargs): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user