Beispiel #1
0
 def _validated(self, value):
     try:
         division = Division.search(value)
     except ValueError:
         raise ValidationError('请选择正确的银行卡开户城市')
     if not division.is_prefecture:
         raise ValidationError(u'请选择正确的银行卡开户城市')
Beispiel #2
0
 def _validate(cls, user_id, division_id, street):
     if not Account.get(user_id):
         raise ValueError('user not found')
     if not Division.search(division_id):
         raise ValueError('administrative division not found')
     # street should be unicode instead of bytes
     if not street:
         raise ValueError('street information too short')
     if len(unicode(street)) > 80:
         raise ValueError('street information too long')
Beispiel #3
0
def bind_bankcard():
    """绑定新的银行卡或更新已有银行卡.
    :query partner: 可选参数, 按合作方支持情况限制返回结果. 目前可为:

                    - ``"zw"`` 指旺 (攒钱助手)
                    - ``"xm"`` 指旺 (攒钱助手)
                    - ``"zs"`` 中山证券 (零钱包)


    :request: :class:`.BankCardRequestSchema`
    :response: :class:`.BankCardSchema`
    :reqheader Authorization: OAuth 2.0 Bearer Token
    :status 200: 绑定或更新成功
    :status 403: 绑定被拒
    """
    bankcard_schema = BankCardSchema(strict=True)
    bankcard_request_schema = BankCardRequestSchema(strict=True)
    partner = request.args.get('partner', type=Partner)
    data = bankcard_request_schema.load(request.get_json(force=True)).data
    result = {
        'mobile_phone': data['mobile_phone'],
        'card_number': data['bankcard_number'],
        'bank_id': data['bank_id'],
        'city_id': data['division_id'],
        'province_id': Division.search(data['division_id']).province.code,
        'local_bank_name': data.get('local_bank_name'),
    }
    #: 针对零钱包,若用户已经绑定银行卡,只返回已绑定卡
    if partner is Partner.zs:
        bankcard_list = [
            bankcard for bankcard in g.bankcard_manager.get_all()
            if is_bound_bankcard(bankcard, zhongshan)
        ]
        if bankcard_list:
            abort(403, u'零钱包暂时只支持绑定一张银行卡, 详情见通知中心')
    try:
        bankcard = g.bankcard_manager.create_or_update(**result)
        inject_bankcard_amount_limit(partner, [bankcard])
    except (BankConflictError, CardConflictError) as e:
        return abort(403, unicode(e))

    return jsonify(success=True, data=bankcard_schema.dump(bankcard).data)
Beispiel #4
0
def test_searching(code, name, year):
    division = Division.search(code)
    assert division.name == name
    assert division.year == year
Beispiel #5
0
def test_searching(code, name, year):
    division = Division.search(code)
    assert division.name == name
    assert division.year == year
Beispiel #6
0
 def division(self):
     return Division.search(self.division_id)
Beispiel #7
0
 def process_formdata(self, valuelist):
     if valuelist:
         self.data = Division.search(valuelist[0])
         if not self.data:
             raise ValueError(self._error)
Beispiel #8
0
 def validate_district(self, field):
     try:
         Division.search(field.data)
     except ValueError:
         raise ValidationError('地区不存在')
Beispiel #9
0
 def province(self):
     return Division.search(self.province_id)
Beispiel #10
0
 def prefecture(self):
     return Division.search(self.city_id)