From 5f4ab934cb5f75728db75df035a2593451972bf0 Mon Sep 17 00:00:00 2001 From: saani Date: Fri, 5 Dec 2025 17:32:04 +0000 Subject: [PATCH] feat: add user timezone field to appointment request and update related serializers and views --- meetings/admin.py | 6 +++--- meetings/serializers.py | 4 ++-- meetings/views.py | 6 ++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/meetings/admin.py b/meetings/admin.py index 668135e..ef17bd7 100644 --- a/meetings/admin.py +++ b/meetings/admin.py @@ -54,9 +54,9 @@ class AdminWeeklyAvailabilityAdmin(admin.ModelAdmin): @admin.register(AppointmentRequest) class AppointmentRequestAdmin(admin.ModelAdmin): - list_display = ['id','full_name', 'email', 'status', 'formatted_created_at', 'formatted_scheduled_datetime'] - list_filter = ['status', 'created_at', 'scheduled_datetime'] - search_fields = ['first_name', 'last_name', 'email'] + list_display = ['id','full_name', 'email', 'status', 'formatted_created_at', 'formatted_scheduled_datetime', 'user_timezone'] + list_filter = ['status', 'created_at', 'scheduled_datetime', 'user_timezone'] + search_fields = ['first_name', 'last_name', 'email', 'phone', 'reason'] readonly_fields = ['id', 'created_at', 'updated_at', 'formatted_created_at', 'formatted_scheduled_datetime'] fieldsets = ( diff --git a/meetings/serializers.py b/meetings/serializers.py index 3fad7fd..0c6258d 100644 --- a/meetings/serializers.py +++ b/meetings/serializers.py @@ -334,7 +334,7 @@ class AppointmentRequestCreateSerializer(serializers.ModelSerializer): appointment.save(update_fields=['user_timezone']) return appointment - + class AppointmentScheduleSerializer(serializers.Serializer): scheduled_datetime = serializers.DateTimeField() scheduled_duration = serializers.IntegerField(default=60, min_value=30, max_value=240) @@ -342,6 +342,7 @@ class AppointmentScheduleSerializer(serializers.Serializer): time_slot = serializers.CharField(required=False, write_only=True) create_jitsi_meeting = serializers.BooleanField(default=True) jitsi_custom_config = serializers.JSONField(required=False, default=dict) + timezone = serializers.CharField(required=False, default='UTC') def validate(self, data): scheduled_datetime = data.get('scheduled_datetime') @@ -428,7 +429,6 @@ class AppointmentScheduleSerializer(serializers.Serializer): 'scheduled_datetime': instance.scheduled_datetime, 'scheduled_duration': instance.scheduled_duration, 'jitsi_meeting_created': instance.jitsi_meeting_created, - 'user_timezone': instance.user_timezone, } if instance.has_jitsi_meeting: diff --git a/meetings/views.py b/meetings/views.py index 5ac1068..9e20b25 100644 --- a/meetings/views.py +++ b/meetings/views.py @@ -76,7 +76,6 @@ class AppointmentRequestCreateView(generics.CreateAPIView): EmailService.send_admin_notification(appointment, availability_mismatch=True) - class AppointmentRequestDetailView(generics.RetrieveAPIView): permission_classes = [IsAuthenticated] queryset = AppointmentRequest.objects.all() @@ -104,6 +103,9 @@ class ScheduleAppointmentView(generics.GenericAPIView): create_jitsi_meeting = serializer.validated_data.get('create_jitsi_meeting', True) jitsi_custom_config = serializer.validated_data.get('jitsi_custom_config', {}) + user_timezone = serializer.validated_data.get('timezone', 'UTC') + + appointment.user_timezone = user_timezone admin_user = request.user @@ -151,7 +153,7 @@ class ScheduleAppointmentView(generics.GenericAPIView): }) except Exception as e: return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) - + class RejectAppointmentView(generics.GenericAPIView): permission_classes = [IsAuthenticated] serializer_class = AppointmentRejectSerializer -- 2.39.5