Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.09 KB | None | 0 0
  1.  
  2. class UsersSerializer(serializers.ModelSerializer):
  3.     password = serializers.CharField(write_only=True)
  4.     gender = serializers.SerializerMethodField()
  5.     date_of_birthday = serializers.SerializerMethodField()
  6.  
  7.     class Meta:
  8.         model = User
  9.         fields = ('id',  'phone', 'first_name', 'last_name', 'is_active',
  10.                   'avatar', 'password', 'gender', 'date_of_birthday', )
  11.         write_only_fields = ('password', )
  12.         read_only_fields = ('is_staff', 'is_active', 'date_joined', )
  13.  
  14.     def get_gender(self, obj):
  15.         try:
  16.             gender = obj.client.get().gender or None
  17.         except Client.DoesNotExist:
  18.             return None
  19.         return gender
  20.  
  21.     def get_date_of_birthday(self, obj):
  22.         try:
  23.             date_of_birthday = obj.client.get().date_of_birthday or None
  24.         except Client.DoesNotExist:
  25.             return None
  26.         return date_of_birthday
  27.  
  28.     def create(self, validated_data):
  29.         user = super(UsersSerializer, self).create(validated_data)
  30.         user.set_password(validated_data['password'])
  31.         user.save()
  32.  
  33.         return user
  34.  
  35.     def update(self, instance, validated_data):
  36.         gender = self.context.get('request').data.get('gender', None)
  37.         date_of_birthday = self.context.get('request').data.get('date_of_birthday', None)
  38.  
  39.         if gender or date_of_birthday:
  40.             kwargs = {}
  41.             if gender:
  42.                 kwargs.update({
  43.                     'gender': gender
  44.                 })
  45.             if date_of_birthday:
  46.                 date_of_birthday = datetime.strptime(date_of_birthday, "%Y-%m-%d")
  47.                 kwargs.update({
  48.                     'date_of_birthday': date_of_birthday.date()
  49.                 })
  50.             kwargs.update({
  51.                 'user': instance
  52.             })
  53.             client, created = Client.objects.get_or_create(user=instance)
  54.             client.date_of_birthday = kwargs.get('date_of_birthday', None)
  55.             client.gender = kwargs.get('gender', None)
  56.             client.save()
  57.         instance.save()
  58.         return instance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement