mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 22:14:07 +01:00
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
from rest_framework import serializers
|
|
from .models import CustomUser
|
|
|
|
|
|
class CustomUserSerializer(serializers.ModelSerializer):
|
|
"""
|
|
Serializer for CustomUser model.
|
|
"""
|
|
email = serializers.EmailField(required=True)
|
|
username = serializers.CharField()
|
|
password = serializers.CharField(min_length=8, write_only=True)
|
|
|
|
class Meta:
|
|
model = CustomUser
|
|
fields = ('email', 'username', 'password')
|
|
extra_kwargs = {'password': {'write_only': True}}
|
|
|
|
def create(self, validated_data):
|
|
"""
|
|
Create a CustomUser instance with validated data, including password hashing.
|
|
"""
|
|
password = validated_data.pop('password', None)
|
|
instance = self.Meta.model(**validated_data)
|
|
if password is not None:
|
|
instance.set_password(password)
|
|
instance.save()
|
|
return instance
|
|
|
|
|
|
class UpdateProfileSerializer(serializers.ModelSerializer):
|
|
"""
|
|
Serializer for updating user profile.
|
|
"""
|
|
profile_pic = serializers.ImageField(required=False)
|
|
username = serializers.CharField(max_length=255, required=False)
|
|
about = serializers.CharField(required=False)
|
|
|
|
class Meta:
|
|
model = CustomUser
|
|
fields = ('profile_pic', 'username', 'about')
|
|
|
|
def update(self, instance, validated_data):
|
|
"""
|
|
Update an existing user's profile.
|
|
"""
|
|
for attr, value in validated_data.items():
|
|
setattr(instance, attr, value)
|
|
instance.save()
|
|
return instance
|
|
|
|
class UpdateProfileNopicSerializer(serializers.ModelSerializer):
|
|
"""
|
|
Serializer for updating user profile.
|
|
"""
|
|
username = serializers.CharField(max_length=255, required=False)
|
|
about = serializers.CharField(required=False)
|
|
|
|
class Meta:
|
|
model = CustomUser
|
|
fields = ('username', 'about')
|
|
|
|
def update(self, instance, validated_data):
|
|
"""
|
|
Update an existing user's profile.
|
|
"""
|
|
for attr, value in validated_data.items():
|
|
setattr(instance, attr, value)
|
|
instance.save()
|
|
return instance |