def put(self, request): user_settings = self.get_object(request.user) serializer = UserSettingsSerializer(user_settings, data=request.data) if serializer.is_valid(): try: code = serializer.validated_data['code'] except: return Response('Code is empty', status=status.HTTP_400_BAD_REQUEST) try: flow = OAuth2WebServerFlow( **Mobileclient._session_class.oauth._asdict()) credential = flow.step2_exchange(code) credential_picked = codecs.encode(pickle.dumps(credential), "base64").decode() gm = Mobileclient() current_device = gm.get_device_ids(credential)[0] except: # TODO change response and connect it to frontend return Response( 'Please enter the correct code or try again later', status=status.HTTP_500_INTERNAL_SERVER_ERROR) user_settings.credential = credential_picked user_settings.current_device = current_device user_settings.credential_is_valid = True serializer.save() update_stats(request.user.pk) return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)