feat: datetime_now helper util
This commit is contained in:
8
app/base/forms/utils.py
Normal file
8
app/base/forms/utils.py
Normal 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
|
||||||
20
app/base/migrations/0002_alter_booking_begin_time.py
Normal file
20
app/base/migrations/0002_alter_booking_begin_time.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user