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")
def info_del(appname, modelName, ids): MODELNAME = get_model_cls(modelName) data = {"success": [], "failed": []} for id in ids: try: id = int(id) if not isinstance(id, int) else id except: _LOGGER.info("id:%s type error", id) continue cond = {"_id": id} info = MODELNAME.find_one(appname, cond, None) if not info: _LOGGER.info("id %s is not exist", id) continue refer_cond = {} refer_cond[modelName] = id refer_rule = Rule.find(appname, refer_cond, toarray=True) if refer_rule: _LOGGER.info("id %s is refered", id) refer_info = {"id": id, "refered_info": []} for item in refer_rule: temp_dict = {"modelName": "rule"} temp_dict["id"] = item.get("_id") refer_info["refered_info"].append(temp_dict) data["failed"].append(refer_info) else: MODELNAME.remove(appname, cond) data["success"].append({"id": id}) if data["failed"]: return json_response_error(DATA_RELETED_BY_OTHER, data) else: return json_response_ok(data, msg="delete successfully")