2
0
Fork 0
This commit is contained in:
Andreas (@xAndy) Zimmermann 2022-04-20 18:57:04 +02:00
parent e72df3548a
commit 15a1182fea
1 changed files with 12 additions and 5 deletions

View File

@ -21,10 +21,12 @@ class Shift(models.Model):
# todo: add helper amount override field # todo: add helper amount override field
def __str__(self): def __str__(self):
return f"{self.room.name}: {self.start_at}" return f"{self.room.name}: {self.start_at}"
def has_ended(self): def has_ended(self):
return (self.start_at + self.duration) < timezone.now() return (self.start_at + self.duration) < timezone.now()
def is_running(self): def is_running(self):
return (self.start_at <=timezone.now()) and (not self.has_ended()) return (self.start_at <= timezone.now()) and (not self.has_ended())
class Helper(models.Model): class Helper(models.Model):
@ -43,19 +45,24 @@ class Helper(models.Model):
msg = Message(to=self, text=text) msg = Message(to=self, text=text)
msg.save() msg.save()
return token return token
# current or next shift # current or next shift
def important_shift(self): def important_shift(self):
ret = ShiftRegistration.objects.annotate( ret = (
ShiftRegistration.objects.annotate(
shift_end=ExpressionWrapper( shift_end=ExpressionWrapper(
F("shift__start_at") + F("shift__duration"), F("shift__start_at") + F("shift__duration"),
output_field=models.DateTimeField(), output_field=models.DateTimeField(),
)).filter(helper=self, shift_end__gte=timezone.now()).order_by("shift__start_at").first() )
)
.filter(helper=self, shift_end__gte=timezone.now())
.order_by("shift__start_at")
.first()
)
if ret: if ret:
return ret.shift return ret.shift
class ShiftRegistration(models.Model): class ShiftRegistration(models.Model):
class Meta: class Meta:
unique_together = (("shift", "helper"),) unique_together = (("shift", "helper"),)