def get(self, uuid=None, rule_id=None, user_id=None): """Retrieve all rules or a specific one :param uuid: policy ID :param rule_id: rule ID :param user_id: user ID who do the request :return: { "rules": [ "policy_id": "policy_id1", "meta_rule_id": "meta_rule_id1", "rule_id1": ["subject_data_id1", "object_data_id1", "action_data_id1"], "rule_id2": ["subject_data_id2", "object_data_id2", "action_data_id2"], ] } :internal_api: get_rules """ try: data = PolicyManager.get_rules(user_id=user_id, policy_id=uuid, rule_id=rule_id) except Exception as e: logger.error(e, exc_info=True) return {"result": False, "error": str(e)}, 500 return {"rules": data}
def _export_rules(self, json_content): policies = PolicyManager.get_policies(self._user_id) rules_array = [] for policy_key in policies: rules = PolicyManager.get_rules(self._user_id, policy_key) rules = rules["rules"] # logger.info(rules) for rule in rules: rule_dict = dict() JsonUtils.copy_field_if_exists(rule, rule_dict, "instructions", dict) JsonUtils.copy_field_if_exists(rule, rule_dict, "enabled", True) JsonUtils.convert_id_to_name(rule["meta_rule_id"], rule_dict, "meta_rule", "meta_rule", ModelManager, self._user_id) JsonUtils.convert_id_to_name(policy_key, rule_dict, "policy", "policy", PolicyManager, self._user_id) ids = rule["rule"] rule_description = dict() meta_rule = ModelManager.get_meta_rules( self._user_id, rule["meta_rule_id"]) meta_rule = [v for v in meta_rule.values()] meta_rule = meta_rule[0] index_subject_data = len(meta_rule["subject_categories"]) - 1 index_object_data = len(meta_rule["subject_categories"]) + len( meta_rule["object_categories"]) - 1 index_action_data = len(meta_rule["subject_categories"]) + len( meta_rule["object_categories"]) + len( meta_rule["action_categories"]) - 1 ids_subject_data = [ids[0]] if len( meta_rule["subject_categories"] ) == 1 else ids[0:index_subject_data] ids_object_data = [ids[index_object_data]] if len( meta_rule["object_categories"] ) == 1 else ids[index_subject_data + 1:index_object_data] ids_action_date = [ids[index_action_data]] if len( meta_rule["action_categories"] ) == 1 else ids[index_object_data + 1:index_action_data] JsonUtils.convert_ids_to_names(ids_subject_data, rule_description, "subject_data", "subject_data", PolicyManager, self._user_id, policy_key) JsonUtils.convert_ids_to_names(ids_object_data, rule_description, "object_data", "object_data", PolicyManager, self._user_id, policy_key) JsonUtils.convert_ids_to_names(ids_action_date, rule_description, "action_data", "action_data", PolicyManager, self._user_id, policy_key) rule_dict["rule"] = rule_description rules_array.append(rule_dict) if len(rules_array) > 0: json_content['rules'] = rules_array
def get_rules(policy_id=None, meta_rule_id=None, rule_id=None): from python_moondb.core import PolicyManager return PolicyManager.get_rules("", policy_id, meta_rule_id, rule_id)