@@ -88,6 +88,37 @@ def _update_policies(self, sec, ptype, old_rules, new_rules):
8888
8989 return rules_updated
9090
91+ def _update_filtered_policies (
92+ self , sec , ptype , new_rules , field_index , * field_values
93+ ):
94+ """_update_filtered_policies deletes old rules and adds new rules."""
95+
96+ old_rules = self .model .get_filtered_policy (
97+ sec , ptype , field_index , * field_values
98+ )
99+
100+ if self .adapter and self .auto_save :
101+ try :
102+ old_rules = self .adapter .update_filtered_policies (
103+ sec , ptype , new_rules , field_index , * field_values
104+ )
105+ except :
106+ pass
107+
108+ if not old_rules :
109+ return False
110+
111+ is_rule_changed = self .model .remove_policies (sec , ptype , old_rules )
112+ self .model .add_policies (sec , ptype , new_rules )
113+ is_rule_changed = is_rule_changed and len (new_rules ) != 0
114+ if not is_rule_changed :
115+ return is_rule_changed
116+ if sec == "g" :
117+ self .build_role_links ()
118+ if self .watcher :
119+ self .watcher .update ()
120+ return is_rule_changed
121+
91122 def _remove_policy (self , sec , ptype , rule ):
92123 """removes a rule from the current policy."""
93124 rule_removed = self .model .remove_policy (sec , ptype , rule )
0 commit comments