You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

100 lines
2.4 KiB

from phonenumber_field.serializerfields import PhoneNumberField
from rest_framework import serializers
from django.contrib.auth import get_user_model
from . import Base64ImageField
from apps.user.models import AuthorRequest
User = get_user_model()
class UserSerializer(serializers.ModelSerializer):
phone = PhoneNumberField(required=False, allow_null=True, allow_blank=True)
class Meta:
model = User
fields = (
'id',
'username',
'email',
'phone',
'first_name',
'last_name',
'is_staff',
'is_active',
'date_joined',
'role',
'gender',
'country',
'city',
'about',
'instagram',
'facebook',
'twitter',
'pinterest',
'youtube',
'vkontakte',
'fb_id',
'fb_data',
'is_email_proved',
'photo',
'balance',
'show_in_mainpage',
)
read_only_fields = (
'id',
'photo',
'date_joined',
'is_staff',
'fb_id',
'fb_data',
'balance',
)
def create(self, validated_data):
instance = super().create(validated_data)
if not instance.password:
password = User.objects.make_random_password()
instance.set_password(password)
instance.save()
return instance
def validate_phone(self, value):
if not value and value is not None:
value = None
return value
class UserPhotoSerializer(serializers.Serializer):
photo = Base64ImageField(
required=False, allow_empty_file=True, allow_null=True
)
class AuthorRequestSerializer(serializers.ModelSerializer):
class Meta:
model = AuthorRequest
fields = (
'id',
'first_name',
'last_name',
'email',
'about',
'facebook',
'status',
'cause',
'accepted_send_at',
'declined_send_at',
'created_at',
'update_at',
)
read_only_fields = (
'id',
'accepted_send_at',
'declined_send_at',
'created_at',
'update_at',
)