access-controller/main/serializers.py
Степаненко Ольга 9c9b4dd08b Change User to get_user_model
2021-05-06 12:26:45 +03:00

76 lines
2.5 KiB
Python

"""
Сериализаторы.
"""
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