diff options
| author | Barry Warsaw | 2007-12-27 23:25:50 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2007-12-27 23:25:50 -0500 |
| commit | 306a1ceee0aad4c623f029d8809b40f7f55b9a6f (patch) | |
| tree | a880cc16e333a785fd3cdcd469dc388407568ba2 /Mailman/interfaces/rules.py | |
| parent | 13dea3a6736834e19ad569b5e3d70a79e096a55e (diff) | |
| download | mailman-306a1ceee0aad4c623f029d8809b40f7f55b9a6f.tar.gz mailman-306a1ceee0aad4c623f029d8809b40f7f55b9a6f.tar.zst mailman-306a1ceee0aad4c623f029d8809b40f7f55b9a6f.zip | |
Change IRuleProcessor to IRuleSet. Plugins now provide only sets of rules,
they do not do the actual rule processing. That's left up to Mailman.
Further, the rule processor can be given a list of rules to run; those will be
the only ones run.
Diffstat (limited to 'Mailman/interfaces/rules.py')
| -rw-r--r-- | Mailman/interfaces/rules.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Mailman/interfaces/rules.py b/Mailman/interfaces/rules.py new file mode 100644 index 000000000..5ef741852 --- /dev/null +++ b/Mailman/interfaces/rules.py @@ -0,0 +1,64 @@ +# Copyright (C) 2007 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +"""Interface describing the basics of rules.""" + +from zope.interface import Interface, Attribute + + + +class DuplicateRuleError(Exception): + """A rule or rule name is added to a processor more than once.""" + + + +class IRule(Interface): + """A basic rule.""" + + name = Attribute('Rule name; must be unique.') + description = Attribute('A brief description of the rule.') + + def check(mlist, msg, msgdata): + """Run the rule. + + :param msg: The message object. + :param msgdata: The message metadata. + :return: A boolean specifying whether the rule was matched or not. + """ + + + +class IRuleSet(Interface): + """A rule processor.""" + + rules = Attribute('The set of all rules this processor knows about') + + def __getitem__(rule_name): + """Return the named rule. + + :param rule_name: The name of the rule. + :return: The IRule given by this name. + :raise: KeyError if no such rule is known by this processor. + """ + + def get(rule_name, default=None): + """Return the name rule. + + :param rule_name: The name of the rule. + :return: The IRule given by this name, or `default` if no such rule + is known by this processor. + """ |
