Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.26 KB | None | 0 0
  1. lass ProfileSerializer(serializers.ModelSerializer):
  2.     # url = serializers.HyperlinkedRelatedField(source="user", view_name="user_profile")
  3.     user = serializers.PrimaryKeyRelatedField(read_only=True)
  4.     class Meta:
  5.         model = Profile
  6.         fields = ('token', 'user','current_location', 'permanent_location', 'dob',
  7.                     'about_me', 'gender_status', 'create_profile_for', 'marital_status',
  8.                     'height', 'weight', 'body_type', 'complexion',)
  9.  
  10.     def to_internal_value(self, data):
  11.         first_name = data.pop('first_name', None)
  12.         last_name = data.pop('last_name', None)
  13.         data = super(ProfileSerializer, self).to_internal_value(data)
  14.         print('data', data)
  15.         data['first_name'] = first_name
  16.         data['last_name'] = last_name
  17.         return data
  18.  
  19.     def update(self, instance, validated_data):
  20.         first_name = validated_data.pop('first_name', None)
  21.         last_name = validated_data.pop('last_name', None)
  22.         user_inst_fields = {}
  23.         if first_name:
  24.             user_inst_fields['first_name'] = first_name
  25.         if last_name:
  26.             user_inst_fields['last_name'] = last_name
  27.         if user_inst_fields:
  28.             User.objects.update_or_create(id=instance.user.id, defaults=user_inst_fields)
  29.         profile, created = Profile.objects.update_or_create(token=instance.token, defaults=validated_data)
  30.         print('profile', profile, created)
  31.         return profile
  32.  
  33. class UserSerializer(serializers.ModelSerializer):
  34.     profile = ProfileSerializer(required=True)
  35.     class Meta:
  36.         model = User
  37.         fields = ('id', 'profile', 'username', 'email', 'first_name', 'last_name',)
  38.  
  39.  
  40. class UserProfile(APIView):
  41.     serializer_class = ProfileSerializer
  42.     def get(self, request, token=None, format=None):
  43.         """
  44.        Returns a list of profile of user
  45.        """
  46.         reply={}
  47.         try:
  48.             profile_instance = Profile.objects.filter(user=self.request.user)
  49.             if token:
  50.                 profile = profile_instance.get(token=token)
  51.                 reply['data'] = self.serializer_class(profile).data
  52.             else:
  53.                 reply['data'] = self.serializer_class(profile_instance, many=True).data
  54.         except:
  55.             reply['data']=[]
  56.         return Response(reply, status.HTTP_200_OK)
  57.  
  58.     def put(self, request, token=None, *args, **kwargs):
  59.         """
  60.        update a profile
  61.        """
  62.         print('token', token)
  63.         print('request data', request.data)
  64.         if token:
  65.             try:
  66.                 profile = Profile.objects.get(token=token)
  67.             except:
  68.                 return Response(status=status.HTTP_400_BAD_REQUEST)
  69.         serialized_data = self.serializer_class(profile, data=request.data, partial=True)
  70.         reply={}
  71.         if serialized_data.is_valid():
  72.             profile = serialized_data.save(user=request.user)
  73.             reply['data'] = self.serializer_class(profile, many=False).data
  74.             return Response(reply, status.HTTP_200_OK)
  75.         else:
  76.             return Response(serialized_data.errors, status.HTTP_400_BAD_REQUEST)
  77.  
  78. url(
  79.         r'^user/profile/(?P<token>[0-9a-z]+)$',
  80.         views.UserProfile.as_view(),
  81.         name="user_profile"
  82.     )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement