summaryrefslogtreecommitdiff
path: root/mailman/interfaces/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'mailman/interfaces/__init__.py')
-rw-r--r--mailman/interfaces/__init__.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/mailman/interfaces/__init__.py b/mailman/interfaces/__init__.py
new file mode 100644
index 000000000..ed16a5c10
--- /dev/null
+++ b/mailman/interfaces/__init__.py
@@ -0,0 +1,78 @@
+# Copyright (C) 2007-2008 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.
+
+import os
+import sys
+
+from munepy import Enum
+from zope.interface import implementedBy
+from zope.interface.interfaces import IInterface
+
+__all__ = [
+ 'Action',
+ 'NewsModeration',
+ ]
+
+
+
+def _populate():
+ import mailman.interfaces
+ iface_mod = sys.modules['mailman.interfaces']
+ # Expose interfaces defined in sub-modules into the top-level package
+ for filename in os.listdir(os.path.dirname(iface_mod.__file__)):
+ base, ext = os.path.splitext(filename)
+ if ext <> '.py':
+ continue
+ modname = 'mailman.interfaces.' + base
+ __import__(modname)
+ module = sys.modules[modname]
+ for name in dir(module):
+ obj = getattr(module, name)
+ try:
+ is_enum = issubclass(obj, Enum)
+ except TypeError:
+ is_enum = False
+ is_interface = IInterface.providedBy(obj)
+ try:
+ is_exception = issubclass(obj, Exception)
+ except TypeError:
+ is_exception = False
+ if is_interface or is_exception or is_enum:
+ setattr(iface_mod, name, obj)
+ __all__.append(name)
+
+
+_populate()
+
+
+
+class Action(Enum):
+ hold = 0
+ reject = 1
+ discard = 2
+ accept = 3
+ defer = 4
+
+
+
+class NewsModeration(Enum):
+ # The newsgroup is not moderated
+ none = 0
+ # The newsgroup is moderated, but allows for an open posting policy.
+ open_moderated = 1
+ # The newsgroup is moderated
+ moderated = 2