# This part of the code was adapted from pretalx (https://github.com/pretalx/pretalx) # Copyright 2017-2019, Tobias Kunze # Original Copyrights licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 # Documentation was mainly added by us, other changes are marked in the code from django.utils import timezone from rest_framework.fields import SerializerMethodField from rest_framework.serializers import ModelSerializer from AKModel.availability.models import Availability class AvailabilitySerializer(ModelSerializer): """ REST Framework Serializer for Availability """ allDay = SerializerMethodField() start = SerializerMethodField() end = SerializerMethodField() def get_allDay(self, obj): # pylint: disable=invalid-name """ Bridge between naming conventions of python and fullcalendar by providing the all_day field as allDay, too """ return obj.all_day def get_start(self, obj): """ Get start timestamp Use already localized strings in serialized field (default would be UTC, but that would require heavy timezone calculation on client side) """ return timezone.localtime(obj.start, obj.event.timezone).strftime("%Y-%m-%dT%H:%M:%S") def get_end(self, obj): """ Get end timestamp Use already localized strings in serialized field (default would be UTC, but that would require heavy timezone calculation on client side) """ return timezone.localtime(obj.end, obj.event.timezone).strftime("%Y-%m-%dT%H:%M:%S") class Meta: model = Availability fields = ('id', 'start', 'end', 'allDay')