from django.contrib.auth import get_user_model from django.utils.translation import gettext_lazy as _ from settings.puckoviews import PuckoView from settings.puckoviews import PuckoSlugView from rest_framework import serializers from mobile_phone.models import Phone_Swedish from .models import User_Profile from .models import Friend_Request class Friend_Request_Serializer(serializers.ModelSerializer): asked_by = serializers.CharField(source="from_user.nickname") to = serializers.CharField(source="to_user.nickname") nickname = serializers.CharField(write_only=True) class Meta: model = Friend_Request fields = ("id", "nickname", "asked_by", "to") read_only_fields = ["id", "asked_by", "to"] extra_kwargs = { "url": {"lookup_field": "pk"} } class User_Searchalizer(serializers.ModelSerializer): search = serializers.CharField(max_length=50, required=True, write_only=True) class Meta: model = User_Profile fields = ("search", "nickname", "birthday", "first_name", "last_name", "slug") read_only_fields = ("nickname", "birthday", "first_name", "last_name", "slug") extra_kwargs = { "url": {"lookup_field": "slug"} } def validate(self, attrs): if not isinstance(attrs["search"], str): raise serializers.ValidationError({"search": "needs to be a string."}) return attrs class User_Profile_Serializer(serializers.ModelSerializer): class Meta: model = User_Profile read_only_fields = ["slug"] exclude = ("id", "user", "friends", "created_at", "updated_at") extra_kwargs = { "url": {"lookup_field": "pk"} } class User_Profile_Small_Serializer(serializers.ModelSerializer): class Meta: model = User_Profile read_only_fields = ["slug"] exclude = ("id", "user", "friends", "created_at", "updated_at", "first_name", "last_name", "birthday") extra_kwargs = { "url": {"lookup_field": "pk"} } class My_Profile_Serializer(serializers.ModelSerializer): class Meta: model = User_Profile read_only_fields = ["slug", "created_at", "updated_at"] exclude = ("id", "user", "friends") extra_kwargs = { "url": {"lookup_field": "slug"} } def update_profile(self, instance, validated_data): instance.nickname = validated_data.get("nickname", instance.nickname) instance.first_name = validated_data.get("first_name", instance.first_name) instance.last_name = validated_data.get("last_name", instance.last_name) instance.birthday = validated_data.get("birthday", instance.birthday) return instance def create(self, validated_data): profile = User_Profile.objects.create(**validated_data) profile.save() return profile def update(self, instance, validated_data): instance = self.update_profile(instance=instance, validated_data=validated_data) instance.save() return instance