From 4cb30c335b32230eb56aabc671611866364568b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Sat, 3 Dec 2022 23:06:57 +0100
Subject: [PATCH] Fix timezone-caused offset when directly creating a new slot
 in scheduler

---
 AKModel/serializers.py                                   | 9 +++++++++
 .../templates/admin/AKScheduling/scheduling.html         | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/AKModel/serializers.py b/AKModel/serializers.py
index 7993b622..8dbbb4ea 100644
--- a/AKModel/serializers.py
+++ b/AKModel/serializers.py
@@ -37,3 +37,12 @@ class AKSlotSerializer(serializers.ModelSerializer):
     class Meta:
         model = AKSlot
         fields = '__all__'
+
+    treat_as_local = serializers.BooleanField(required=False, default=False, write_only=True)
+
+    def create(self, validated_data:dict):
+        if validated_data['treat_as_local']:
+            validated_data['start'] = validated_data['start'].replace(tzinfo=None).astimezone(
+                validated_data['event'].timezone)
+        del validated_data['treat_as_local']
+        return super().create(validated_data)
diff --git a/AKScheduling/templates/admin/AKScheduling/scheduling.html b/AKScheduling/templates/admin/AKScheduling/scheduling.html
index 5d15411c..05d37a38 100644
--- a/AKScheduling/templates/admin/AKScheduling/scheduling.html
+++ b/AKScheduling/templates/admin/AKScheduling/scheduling.html
@@ -261,7 +261,8 @@
                             duration: $('#id_duration').val(),
                             room: $('#id_room').val(),
                             ak: ak,
-                            event: "{{ event.pk }}"
+                            event: "{{ event.pk }}",
+                            treat_as_local: true,
                         },
                         success: function (response) {
                            $('#newAKSlotModal').modal('hide');
-- 
GitLab