Ejemplo n.º 1
0
def delete_rule_info(appname, rule_ids):
    data = {"success": [], "failed": []}
    for rule_id in rule_ids:
        try:
            rule_id = int(rule_id) if not isinstance(rule_id, int) else rule_id
        except:
            _LOGGER.error("id:%s type error", rule_id)
            continue

        cond = {"_id": rule_id}
        rule = Rule.find_one(appname, cond, None)
        if not rule:
            _LOGGER.error("rule id %s is not exist", rule_id)
            continue
        refer_cond = {"target_id": int(rule_id), "target_field": "rule"}
        refer_rule = ReferInfo.find_one_refered_info(
            appname, refer_cond, None)
        if refer_rule:
            _LOGGER.info("rule id %s is refer", rule_id)
            refer_info = {"id": rule_id}
            refer_info["refered_info"] = refer_rule["refered_info"]
            data["failed"].append(refer_info)
        else:
            Rule.remove(appname, cond)
            data["success"].append({"id": rule_id})

    if data["failed"]:
        return json_response_error(DATA_RELETED_BY_OTHER, data)
    else:
        return json_response_ok(data, msg="delete successfully")