コード例 #1
0
ファイル: test_rule.py プロジェクト: zzzz123321/aswan
    def test_rule(self):

        req_body = {'user_id': '111'}

        # 命中bool型策略
        control, weight = calculate_rule(id_=self.rule_id, req_body=req_body)
        self.assertEquals(control, 'log')
        self.assertEquals(weight, 90)

        # 命中名单型策略
        add_element_to_menu(event_code=self.event_code, menu_type='black', dimension='user_id', element='111')
        control, weight = calculate_rule(id_=self.rule_id, req_body=req_body)
        self.assertEquals(control, 'deny')
        self.assertEquals(weight, 100)
コード例 #2
0
    def test_rule(self):
        req_body = {'user_id': '111'}

        # Hit bool-type strategy
        control, weight = calculate_rule(id_=self.rule_id, req_body=req_body)
        self.assertEqual(control, 'log')
        self.assertEqual(weight, 90)

        # Hit List strategy
        add_element_to_menu(event_code=self.event_code,
                            menu_type='black',
                            dimension='user_id',
                            element='111')
        control, weight = calculate_rule(id_=self.rule_id, req_body=req_body)
        self.assertEqual(control, 'log')
        self.assertEqual(weight, 90)
コード例 #3
0
ファイル: query.py プロジェクト: yqyunjie/aswan
def query_handler(req_body):
    rule_id = req_body.get('rule_id')

    result, ec, error = None, 0, None
    try:
        assert rule_id
        rule_id = str(rule_id)
        result = calculate_rule(rule_id, req_body)
    except AssertionError:
        error = 'must contain rule_id'
        ec = 100
    except RuleNotExistsException:
        error = 'rule_id does not exist or is offline'
        ec = 101

    return Response(result=result, error=error, ec=ec)
コード例 #4
0
def query_handler(req_body):
    rule_id = req_body.get('rule_id')

    result, ec, error = None, 0, None
    try:
        if settings.DEBUG:
            assert rule_id

        rule_id = str(rule_id)
        control, weight = calculate_rule(rule_id, req_body, rules=rules, ac=ac)
        result = {'control': control, 'weight': weight}
    except AssertionError:
        error = _('must contain rule_id')
        ec = 100
    except RuleNotExistsException:
        error = _('rule_id does not exist or is offline')
        ec = 101

    return Response(result=result, error=error, ec=ec)
コード例 #5
0
ファイル: views.py プロジェクト: onisama/-
 def post(self, request, *args, **kwargs):
     form = self.form_class(data=request.POST)
     if form.is_valid():
         uuid_ = request.POST.get('rule')
         name = "rule:{}".format(uuid_)
         conn = get_redis_client()
         id_ = conn.hget(name, 'id')
         req_body = form.cleaned_data['req_body']
         if not isinstance(req_body, list):
             req_body = [req_body]
         from risk_models.rule import calculate_rule
         results = []
         for req in req_body:
             result, _ = calculate_rule(id_, req)
             results.append(CONTROL_MAP[result])
         if len(results) == 1:
             results = results[0]
         data = dict(state=True, data=results)
     else:
         data = dict(state=False, error=errors_to_dict(form.errors))
     return self.render_json_response(data)