feat: datetime_now helper util

This commit is contained in:
relikd
2023-06-02 17:05:59 +02:00
parent 4cac963a5e
commit 7de6db0c8d
4 changed files with 33 additions and 7 deletions

8
app/base/forms/utils.py Normal file
View File

@@ -0,0 +1,8 @@
from django.utils import timezone
from datetime import timedelta
def datetime_now():
now = timezone.now()
return now - timedelta(microseconds=now.microsecond) # remove precision

View File

@@ -0,0 +1,20 @@
# Generated by Django 4.2 on 2023-06-02 14:45
import app.base.forms.fields
import app.base.forms.utils
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('base', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='booking',
name='begin_time',
field=app.base.forms.fields.DateTimeField(default=app.base.forms.utils.datetime_now, verbose_name='Beginn'),
),
]

View File

@@ -2,9 +2,9 @@ from django.db import models
from django.db.models import Q from django.db.models import Q
from django.forms.utils import to_current_timezone from django.forms.utils import to_current_timezone
from django.urls import reverse from django.urls import reverse
from django.utils import timezone
from app.base.forms.fields import DateTimeField, TextField from app.base.forms.fields import DateTimeField, TextField
from app.base.forms.utils import datetime_now
from datetime import datetime from datetime import datetime
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
@@ -20,7 +20,7 @@ class Booking(models.Model):
'BookingType', on_delete=models.PROTECT, verbose_name='Art') 'BookingType', on_delete=models.PROTECT, verbose_name='Art')
user: 'models.ForeignKey[Person]' = models.ForeignKey( user: 'models.ForeignKey[Person]' = models.ForeignKey(
'Person', on_delete=models.CASCADE, verbose_name='Nutzer:in') 'Person', on_delete=models.CASCADE, verbose_name='Nutzer:in')
begin_time = DateTimeField('Beginn', default=datetime.now) begin_time = DateTimeField('Beginn', default=datetime_now)
end_time = DateTimeField('Ende', blank=True, null=True) end_time = DateTimeField('Ende', blank=True, null=True)
comment = TextField('Kommentar', blank=True) comment = TextField('Kommentar', blank=True)
@@ -62,7 +62,7 @@ class Booking(models.Model):
def currently_open_checkin(for_user: 'Person|OuterRef') -> 'Booking|None': def currently_open_checkin(for_user: 'Person|OuterRef') -> 'Booking|None':
return Booking.objects.filter( return Booking.objects.filter(
Q(user=for_user), Q(user=for_user),
Q(begin_time__lte=timezone.now()), Q(begin_time__lte=datetime_now()),
Q(end_time=None), Q(end_time=None),
Q(type__is_checkin=True) Q(type__is_checkin=True)
).first() ).first()

View File

@@ -1,9 +1,8 @@
from datetime import timedelta
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils import timezone
from django.views import View from django.views import View
from app.base.forms.utils import datetime_now
from app.base.models import Person, Booking, BookingType from app.base.models import Person, Booking, BookingType
@@ -12,8 +11,7 @@ class ToggleCheckinView(LoginRequiredMixin, View):
user = Person.objects.get(id=kwargs['user_id']) user = Person.objects.get(id=kwargs['user_id'])
next = self.request.GET.get('next') next = self.request.GET.get('next')
booking = user.current_checkin # performs db query booking = user.current_checkin # performs db query
now = timezone.now() now = datetime_now()
now -= timedelta(microseconds=now.microsecond) # remove precision
if booking: if booking:
booking.end_time = now booking.end_time = now