""" Сериализаторы. """ from django.contrib.auth import get_user_model from rest_framework import serializers from main.models import UserProfile from access_controller.settings import ZENDESK_ROLES class UserSerializer(serializers.HyperlinkedModelSerializer): """ Класс serializer для модели User. :param model: Модель, на основании которой создается сериализатор :type model: :class:`django.contrib.auth.Models` :param fields: Передаваемые поля :type email: :class:`list` """ class Meta: model = get_user_model() fields = ['email'] class ProfileSerializer(serializers.HyperlinkedModelSerializer): """ Класс serializer для модели профиля пользователя. :param user: Вложенный сериализатор :type user: :class:`UserSerializer` :param model: Модель, на основании которой создается сериализатор :type model: :class:`django.contrib.auth.Models` :param fields: Передаваемые поля :type email: :class:`list` """ user = UserSerializer() class Meta: model = UserProfile fields = ['user', 'id', 'name', 'zendesk_role'] class ZendeskUserSerializer(serializers.Serializer): """ Класс serializer для объектов пользователей из Zenpy. :param name: Имя пользователя :type name: :class:`str` :param zendesk_role: Роль из Zendesk :type zendesk_role: :class:`str` :param email: Email пользователя :type email: :class:`str` """ name = serializers.CharField() zendesk_role = serializers.SerializerMethodField('get_zendesk_role') email = serializers.EmailField() @staticmethod def get_zendesk_role(obj) -> str: """ Функция строкового заполнения поля сериализатора zendesk_role. :param obj: объект пользователя Zendesk :return: роль engineer либо light_agent """ if obj.custom_role_id == ZENDESK_ROLES['engineer']: return 'engineer' if obj.custom_role_id == ZENDESK_ROLES['light_agent']: return 'light_agent' return "empty" def create(self, validated_data): pass def update(self, instance, validated_data): pass