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

View File

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