From d1bdd2bc74daa1b4a5ab53bbaa5ac8c3f0c38321 Mon Sep 17 00:00:00 2001 From: "Andreas (@xAndy) Zimmermann" Date: Wed, 20 Apr 2022 22:05:26 +0200 Subject: [PATCH] add initial shift reminder functionality --- .../0004_shiftregistration_reminder_sent.py | 18 ++++++++++++++++++ shiftregister/app/models.py | 14 ++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 shiftregister/app/migrations/0004_shiftregistration_reminder_sent.py diff --git a/shiftregister/app/migrations/0004_shiftregistration_reminder_sent.py b/shiftregister/app/migrations/0004_shiftregistration_reminder_sent.py new file mode 100644 index 0000000..f99e618 --- /dev/null +++ b/shiftregister/app/migrations/0004_shiftregistration_reminder_sent.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.4 on 2022-04-20 17:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("app", "0003_message_created_at"), + ] + + operations = [ + migrations.AddField( + model_name="shiftregistration", + name="reminder_sent", + field=models.BooleanField(default=False), + ), + ] diff --git a/shiftregister/app/models.py b/shiftregister/app/models.py index 108c95a..61b96bd 100644 --- a/shiftregister/app/models.py +++ b/shiftregister/app/models.py @@ -68,10 +68,24 @@ class ShiftRegistration(models.Model): # use restrict for now as Model.delete is not called shift = models.ForeignKey(Shift, on_delete=models.RESTRICT) helper = models.ForeignKey(Helper, on_delete=models.CASCADE) + reminder_sent = models.BooleanField(default=False) def can_cancel(self): return self.shift.start_at > (timezone.now() + timedelta(hours=4)) + def send_reminder(self): + text = f"Deine Kontakt-Schicht begint um {self.shift.start_at.strftime('%H:%M')}, bitte komme eine halbe Stunde vorher an den Infopoint." + msg = Message(to=self.helper, text=text) + msg.save() + self.reminder_sent = True + self.save() + + def get_unnotified_registrations(): + return ShiftRegistration.objects.filter( + reminder_sent=False, + shift__start_at__lte=timezone.now() + timedelta(minutes=60), + ) + class Message(models.Model): # remove limit and send long messages in multiple messages?