Tesis 1.0.0
Loading...
Searching...
No Matches
serializers.py
Go to the documentation of this file.
1from django.contrib.auth import get_user_model,authenticate
2from rest_framework import serializers
3
4class UsuarioSerializer(serializers.ModelSerializer):
5 imagen_perfil_url = serializers.CharField(required=False, allow_blank=True, allow_null=True)
6 direccion = serializers.CharField(required=False, allow_blank=True, allow_null=True)
7
8 class Meta:
9 model = get_user_model()
10
11 fields = ['email','password','nombre','apellido','telefono','direccion','imagen_perfil_url']
12
13 extra_kwargs = {'password': {'write_only': True}}
14
15 def create(self, validated_data):
16 return get_user_model().objects.create_user(**validated_data)
17
18 def update(self, instance, validated_data):
19 password = validated_data.pop('password', None)
20 imagen_perfil_url = validated_data.pop('imagen_perfil_url', None)
21 direccion = validated_data.pop('direccion', None)
22 user = super().update(instance, validated_data)
23
24 if imagen_perfil_url is not None:
25 user.imagen_perfil_url = imagen_perfil_url
26 user.save()
27
28 if direccion is not None:
29 user.direccion = direccion
30 user.save()
31
32 if password:
33 user.set_password(password)
34 user.save()
35
36 return user
37
38class AuthTokenSerializer(serializers.Serializer):
39 email = serializers.EmailField()
40 password =serializers.CharField(style ={'input_type' : 'password'}, write_only=True)
41
42 def validate(self,data):
43 email = data.get('email')
44 password = data.get('password')
45 user = authenticate(
46 request = self.context.get('request'),
47 username = email,
48 password = password
49 )
50
51 if not user:
52 raise serializers.ValidationError('No se pudo Autenticar', code = 'autorizacion')
53
54 data['user'] = user
55 return data
update(self, instance, validated_data)