81 lines
1.9 KiB
Python
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}$"),
|
|
],
|
|
)
|