diff --git a/fmn/lib/models.py b/fmn/lib/models.py index d2f3fc1..f47f4fd 100644 --- a/fmn/lib/models.py +++ b/fmn/lib/models.py @@ -300,6 +300,17 @@ def create_from_code_path(cls, session, valid_paths, code_path, session.commit() return rule + def set_argument(self, session, key, value): + args = self.arguments + args[key] = value + self.arguments = args + session.flush() + session.commit() + self.notify( + self.filter.preference.openid, + self.filter.preference.context.name, + "filters") + def title(self, valid_paths): root, name = self.code_path.split(':', 1) return valid_paths[root][name]['title'] @@ -355,6 +366,18 @@ def fired(self, session): if pref: self.notify(pref.openid, pref.context_name, "filters") + def get_rule(self, session, code_path, **kw): + for r in self.rules: + if r.code_path == code_path: + return r + raise ValueError("No such rule found: %r" % code_path) + + def has_rule(self, session, code_path, **kw): + for r in self.rules: + if r.code_path == code_path: + return True + return False + def add_rule(self, session, paths, rule, **kw): if isinstance(rule, basestring): rule = Rule.create_from_code_path(session, paths, rule, **kw)