def post(self, request): ''' 绑定用户 ''' serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] unionid = serializer.validated_data['user_id'] wechat_user = WechatUser.valid_objects.filter(user=user).first() if wechat_user: wechat_user.unionid = unionid else: wechat_user = WechatUser.valid_objects.create(unionid=unionid, user=user) wechat_user.save() token = user.token data = {'token': token, **UserWithPermSerializer(user).data} LOG_CLI(user).user_login() return Response(data, HTTP_201_CREATED)
def update(self, request, *args, **kwargs): # pylint: disable=unused-argument serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) validated_data = serializer.validated_data user = validated_data.pop('user') if user.is_settled: # raise AuthenticationFailed return 403 ? return Response('only for unsettled user', status=status.HTTP_401_UNAUTHORIZED) cli = CLI(user=user) user.__dict__.update(validated_data) user.save() cli.set_user_password(user, validated_data['password']) LOG_CLI(user).user_activate() return Response({ # 'token': user.token, **UserWithPermSerializer(user).data, })
def get(self, request, *args, **kwargs): key = request.query_params.get('key', '') if not key: raise ValidationError({'key': ['this field is requied']}) invitation = Invitation.parse(key) if invitation is None: return Response({'key': ['invalid']}, status=status.HTTP_400_BAD_REQUEST) if invitation.is_expired: return Response({'key': ['expired']}, status=status.HTTP_400_BAD_REQUEST) user = invitation.invitee return Response({ # 'token': user.token, **UserWithPermSerializer(user).data, })
def post(self, request): """ 绑定用户 """ serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] github_user_id = serializer.validated_data['user_id'] github_user = GithubUser.valid_objects.filter(user=user).first() if github_user: github_user.github_user_id = github_user_id else: github_user = GithubUser.valid_objects.create( github_user_id=github_user_id, user=user) github_user.save() token = user.token data = {'token': token, **UserWithPermSerializer(user).data} LOG_CLI(user).user_login() return Response(data, HTTP_201_CREATED)
def attachment(self, token): user = token.user return UserWithPermSerializer(user).data