Skip to content
Snippets Groups Projects
  • Benjamin Hättasch's avatar
    2b7f9314
    Improve AKModel · 2b7f9314
    Benjamin Hättasch authored
    Add or complete docstrings
    Remove code smells
    Disable irrelevant warnings
    Update translations to changed line numbers and line breaks
    Move duplicated code for event field pre-population and event timezone adaption to mixins
    2b7f9314
    History
    Improve AKModel
    Benjamin Hättasch authored
    Add or complete docstrings
    Remove code smells
    Disable irrelevant warnings
    Update translations to changed line numbers and line breaks
    Move duplicated code for event field pre-population and event timezone adaption to mixins
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
serializers.py 1.68 KiB
# 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')