2
0
Fork 0

show running shifts in free shifts, worklist and terminal

This commit is contained in:
Andreas (@xAndy) Zimmermann 2022-05-20 20:36:16 +02:00
parent 046189d93c
commit 10e642c4a3
5 changed files with 30 additions and 11 deletions

View File

@ -151,7 +151,7 @@ class ShiftRegistration(models.Model):
return f"{self.helper.name}: {self.shift}"
def is_checked_in(self):
return self.state==self.RegState.CHECKED_IN
return self.state == self.RegState.CHECKED_IN
class Message(models.Model):

View File

@ -7,6 +7,7 @@ from .models import TeamBackup
from .models import Shift
from .forms import TeamBackupForm
from datetime import timedelta
from django.db.models import DateTimeField
# Create your views here.
@login_required
@ -16,9 +17,15 @@ def worklist(request):
)
shifts = (
Shift.with_reg_count()
.annotate(
end_at=ExpressionWrapper(
F("start_at") + F("duration"),
output_field=DateTimeField(),
)
)
.filter(
help_wanted,
start_at__gt=timezone.now(),
end_at__gte=timezone.now(),
deleted=False,
)
.order_by("start_at", "room_id")
@ -48,9 +55,15 @@ def terminal(request):
)
shifts = (
Shift.with_reg_count()
.annotate(
end_at=ExpressionWrapper(
F("start_at") + F("duration"),
output_field=DateTimeField(),
)
)
.filter(
help_wanted,
start_at__gt=timezone.now() - timedelta(minutes=20),
end_at__gte=timezone.now(),
deleted=False,
)
.order_by("start_at", "room_id")

View File

@ -10,10 +10,9 @@ class NameField(forms.ModelChoiceField):
def label_from_instance(self, user):
return f"{user.name} ({(str(user.phone))[-3:]})"
class HelperShift(forms.Form):
helper = NameField(
label="Helfer*in", queryset=Helper.objects.order_by("name")
)
helper = NameField(label="Helfer*in", queryset=Helper.objects.order_by("name"))
class BulkMessage(forms.Form):

View File

@ -11,5 +11,5 @@ urlpatterns = [
path("shift/<int:pk>", views.shift_detail, name="shift"),
path("helper/<int:pk>", views.HelperDetail.as_view(), name="helper"),
path("message/", views.bulk_message, name="bulk_message"),
path("checkin/<int:pk>", views.checkin, name="checkin" ),
path("checkin/<int:pk>", views.checkin, name="checkin"),
]

View File

@ -141,14 +141,21 @@ class FreeShiftList(ShiftList):
) & Q(room__required_helpers__gt=F("reg_count"))
return (
Shift.with_reg_count()
.annotate(
end_at=ExpressionWrapper(
F("start_at") + F("duration"),
output_field=DateTimeField(),
)
)
.filter(
help_wanted,
start_at__gt=timezone.now(),
deleted = False,
end_at__gte=timezone.now(),
deleted=False,
)
.order_by("start_at", "room_id")
)
@login_required
def checkin(request, pk):
reg = get_object_or_404(ShiftRegistration, pk=pk)