Files
Pulse-API/solution/pulse/api/users/serializers.py
T
2024-03-04 23:21:51 +03:00

81 lines
1.9 KiB
Python

from django.core.validators import RegexValidator
from rest_framework import serializers
from api.users.models import Friendship, Profile
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = [
"login",
"email",
"password",
"countryCode",
"isPublic",
"phone",
"image",
]
class UpdateProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = [
"countryCode",
"isPublic",
"phone",
"image",
]
def to_representation(self, instance):
data = super().to_representation(instance)
if data["image"] is None:
del data["image"]
if data["phone"] is None:
del data["phone"]
return data
class PublicProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = [
"login",
"email",
"countryCode",
"isPublic",
"phone",
"image",
]
def to_representation(self, instance):
data = super().to_representation(instance)
if data["image"] is None:
del data["image"]
if data["phone"] is None:
del data["phone"]
return data
class FriendshipSerializer(serializers.ModelSerializer):
login = serializers.SerializerMethodField()
class Meta:
model = Friendship
fields = ["login", "addedAt"]
def get_login(self, obj):
return obj.to_profile.login
class PasswordChangeSerializer(serializers.Serializer):
# ruff: noqa: N815
oldPassword = serializers.CharField(required=True)
newPassword = serializers.CharField(
required=True,
validators=[
RegexValidator(r"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,100}$"),
],
)