diff --git a/counter/forms.py b/counter/forms.py index 5e144d44..fa79028c 100644 --- a/counter/forms.py +++ b/counter/forms.py @@ -1,7 +1,7 @@ import json import math import uuid -from datetime import date +from datetime import date, datetime, timezone from dateutil.relativedelta import relativedelta from django import forms @@ -489,13 +489,14 @@ class InvoiceCallForm(forms.Form): def __init__(self, *args, month: date, **kwargs): super().__init__(*args, **kwargs) self.month = month + month_start = datetime(month.year, month.month, month.day, tzinfo=timezone.utc) self.clubs = list( Club.objects.filter( Exists( Selling.objects.filter( club=OuterRef("pk"), - date__gte=month, - date__lte=month + relativedelta(months=1), + date__gte=month_start, + date__lte=month_start + relativedelta(months=1), ) ) ).annotate( diff --git a/counter/tests/test_invoices.py b/counter/tests/test_invoices.py index 099ab1b9..8a9cc63a 100644 --- a/counter/tests/test_invoices.py +++ b/counter/tests/test_invoices.py @@ -6,7 +6,7 @@ from django.contrib.auth.models import Permission from django.core.exceptions import ValidationError from django.test import Client from django.urls import reverse -from django.utils.timezone import localdate +from django.utils.timezone import now from model_bakery import baker from pytest_django.asserts import assertRedirects @@ -57,7 +57,7 @@ def test_invoice_call_view(client: Client, query: dict | None): @pytest.mark.django_db def test_invoice_call_form(): Selling.objects.all().delete() - month = localdate() - relativedelta(months=1) + month = now() - relativedelta(months=1) clubs = baker.make(Club, _quantity=2) recipe = sale_recipe.extend(date=month, customer=baker.make(Customer, amount=10000)) recipe.make(club=clubs[0], quantity=2, unit_price=200) diff --git a/counter/views/admin.py b/counter/views/admin.py index 38cf8878..24c112f5 100644 --- a/counter/views/admin.py +++ b/counter/views/admin.py @@ -12,7 +12,7 @@ # OR WITHIN THE LOCAL FILE "LICENSE" # # -from datetime import timedelta +from datetime import datetime, timedelta from django.conf import settings from django.contrib.auth.mixins import PermissionRequiredMixin, UserPassesTestMixin @@ -23,6 +23,7 @@ from django.forms.models import modelform_factory from django.shortcuts import get_object_or_404 from django.urls import reverse, reverse_lazy from django.utils import timezone +from django.utils.timezone import get_current_timezone from django.utils.translation import gettext as _ from django.views.generic import DetailView, ListView, TemplateView from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView @@ -285,7 +286,13 @@ class CounterStatView(PermissionRequiredMixin, DetailView): def get_context_data(self, **kwargs): """Add stats to the context.""" counter: Counter = self.object - semester_start = get_start_of_semester() + start_date = get_start_of_semester() + semester_start = datetime( + start_date.year, + start_date.month, + start_date.day, + tzinfo=get_current_timezone(), + ) office_hours = counter.get_top_barmen() kwargs = super().get_context_data(**kwargs) kwargs.update( diff --git a/counter/views/invoice.py b/counter/views/invoice.py index 63585796..dce34f0d 100644 --- a/counter/views/invoice.py +++ b/counter/views/invoice.py @@ -12,7 +12,7 @@ # OR WITHIN THE LOCAL FILE "LICENSE" # # -from datetime import datetime +from datetime import datetime, timezone from urllib.parse import urlencode from dateutil.relativedelta import relativedelta @@ -63,7 +63,8 @@ class InvoiceCallView( """Add sums to the context.""" kwargs = super().get_context_data(**kwargs) kwargs["months"] = Selling.objects.datetimes("date", "month", order="DESC") - start_date = self.get_month() + month = self.get_month() + start_date = datetime(month.year, month.month, month.day, tzinfo=timezone.utc) end_date = start_date + relativedelta(months=1) kwargs["sum_cb"] = Refilling.objects.filter(