コード例 #1
0
ファイル: __init__.py プロジェクト: gaolilina/sjzk
    def post(self,
             request,
             method,
             phone_number,
             password,
             validation_code,
             invitation_code=None,
             icon=DEFAULT_ICON_URL,
             wechatid=None,
             nickname=None,
             gender=0,
             province=None,
             city=None):
        """注册,若成功返回用户令牌"""

        if method == 'phone':
            if User.objects.filter(phone_number=phone_number).count() > 0:
                abort(403, '用户已经注册')
                return
        elif method == 'wechat':
            if wechatid is None or nickname is None:
                abort(400, 'wechatid 或昵称不能为空')
                return
            # 防止绑定过微信的用户重复绑定
            if User.objects.filter(wechat_id=wechatid).count() > 0:
                abort(403, '用户已经注册')
                return
            user = User.objects.filter(phone_number=phone_number).first()
            if user is not None:
                # 绑定已经使用手机号注册的账户
                User.objects.filter(phone_number=phone_number).update(
                    wechat_id=wechatid)
                return JsonResponse({'token': user.token})
        else:
            abort(400)
            return
        if not UserValidationCode.verify(phone_number, validation_code):
            abort(400, '验证码错误')

        with transaction.atomic():
            try:
                user = User(phone_number=phone_number,
                            wechat_id=wechatid,
                            city=city,
                            province=province,
                            gender=gender,
                            icon=icon)
                user.set_password(password)
                user.generate_info(phone_number)
                user.save()
                code, desc = register_to_huanxin(phone_number, user.password,
                                                 user.name)
                if code != 200:
                    raise RuntimeError(desc)
                if invitation_code:
                    self.__add_invited_users(request.user,
                                             invitation_code.split(','))
                # 加积分
                user.score += get_score_stage(3)
                user.score_records.create(score=get_score_stage(3),
                                          type="初始数据",
                                          description="首次手机号注册")
                return JsonResponse({'token': user.token})
            except RuntimeError as e:
                print(e)
                abort(403, str(e) or '创建用户失败')