Co-authored-by: Eve832 <eve.meelan@grafana.com>
Co-authored-by: Francisco Montes de Oca <nevermind89x@gmail.com>
Co-authored-by: Ildar Iskhakov <ildar.iskhakov@grafana.com>
Co-authored-by: Innokentii Konstantinov <innokenty.konstantinov@grafana.com>
Co-authored-by: Julia <ferril.darkdiver@gmail.com>
Co-authored-by: maskin25 <kengurek@gmail.com>
Co-authored-by: Matias Bordese <mbordese@gmail.com>
Co-authored-by: Matvey Kukuy <motakuk@gmail.com>
Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
Co-authored-by: Richard Hartmann <richih@richih.org>
Co-authored-by: Robby Milo <robbymilo@fastmail.com>
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
Co-authored-by: Yulia Shanyrova <yulia.shanyrova@grafana.com>
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from rest_framework import serializers
|
|
|
|
from apps.slack.models import SlackUserIdentity
|
|
from apps.user_management.models import User
|
|
from common.api_helpers.mixins import EagerLoadingMixin
|
|
from common.constants.role import Role
|
|
|
|
|
|
class SlackUserIdentitySerializer(serializers.ModelSerializer):
|
|
user_id = serializers.CharField(source="slack_id")
|
|
team_id = serializers.CharField(source="slack_team_identity.slack_id")
|
|
|
|
class Meta:
|
|
model = SlackUserIdentity
|
|
fields = (
|
|
"user_id",
|
|
"team_id",
|
|
)
|
|
|
|
|
|
class FastUserSerializer(serializers.ModelSerializer):
|
|
id = serializers.ReadOnlyField(read_only=True, source="public_primary_key")
|
|
email = serializers.EmailField(read_only=True)
|
|
role = serializers.SerializerMethodField()
|
|
is_phone_number_verified = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ["id", "email", "username", "role", "is_phone_number_verified"]
|
|
|
|
@staticmethod
|
|
def get_role(obj):
|
|
return Role(obj.role).name.lower()
|
|
|
|
def get_is_phone_number_verified(self, obj):
|
|
return obj.verified_phone_number is not None
|
|
|
|
|
|
class UserSerializer(serializers.ModelSerializer, EagerLoadingMixin):
|
|
id = serializers.ReadOnlyField(read_only=True, source="public_primary_key")
|
|
email = serializers.EmailField(read_only=True)
|
|
role = serializers.SerializerMethodField()
|
|
slack = SlackUserIdentitySerializer(read_only=True, source="slack_user_identity")
|
|
is_phone_number_verified = serializers.SerializerMethodField()
|
|
|
|
SELECT_RELATED = [
|
|
"slack_user_identity",
|
|
"slack_user_identity__slack_team_identity",
|
|
]
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ["id", "email", "slack", "username", "role", "is_phone_number_verified"]
|
|
|
|
@staticmethod
|
|
def get_role(obj):
|
|
return Role(obj.role).name.lower()
|
|
|
|
def get_is_phone_number_verified(self, obj):
|
|
return obj.verified_phone_number is not None
|