76 lines
2.5 KiB
Python
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
|