summaryrefslogtreecommitdiff
path: root/Mailman/SafeDict.py
diff options
context:
space:
mode:
authorBarry Warsaw2008-02-27 01:26:18 -0500
committerBarry Warsaw2008-02-27 01:26:18 -0500
commita1c73f6c305c7f74987d99855ba59d8fa823c253 (patch)
tree65696889450862357c9e05c8e9a589f1bdc074ac /Mailman/SafeDict.py
parent3f31f8cce369529d177cfb5a7c66346ec1e12130 (diff)
downloadmailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.tar.gz
mailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.tar.zst
mailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.zip
Diffstat (limited to 'Mailman/SafeDict.py')
-rw-r--r--Mailman/SafeDict.py86
1 files changed, 0 insertions, 86 deletions
diff --git a/Mailman/SafeDict.py b/Mailman/SafeDict.py
deleted file mode 100644
index 56525fefa..000000000
--- a/Mailman/SafeDict.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) 1998-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.
-
-from Mailman.configuration import config
-
-"""A `safe' dictionary for string interpolation."""
-
-COMMASPACE = ', '
-
-# XXX This module should go away.
-
-
-
-class SafeDict(dict):
- """Dictionary which returns a default value for unknown keys.
-
- This is used in maketext so that editing templates is a bit more robust.
- """
- def __init__(self, d='', charset=None, lang=None):
- super(SafeDict, self).__init__(d)
- if charset:
- self.cset = charset
- elif lang:
- self.cset = config.languages.get_charset(lang)
- else:
- self.cset = 'us-ascii'
-
- def __getitem__(self, key):
- try:
- return super(SafeDict, self).__getitem__(key)
- except KeyError:
- if isinstance(key, basestring):
- return '%('+key+')s'
- else:
- return '<Missing key: %s>' % `key`
-
- def interpolate(self, template):
- for k, v in self.items():
- if isinstance(v, str):
- self.__setitem__(k, unicode(v, self.cset))
- return template % self
-
-
-
-class MsgSafeDict(SafeDict):
- def __init__(self, msg, d=None):
- self.__msg = msg
- if d is None:
- d = {}
- super(MsgSafeDict, self).__init__(d)
-
- def __getitem__(self, key):
- if key.startswith('msg_'):
- return self.__msg.get(key[4:], 'n/a')
- elif key.startswith('allmsg_'):
- missing = []
- all = self.__msg.get_all(key[7:], missing)
- if all is missing:
- return 'n/a'
- return COMMASPACE.join(all)
- else:
- return super(MsgSafeDict, self).__getitem__(key)
-
- def copy(self):
- d = super(MsgSafeDict, self).copy()
- for k in self.__msg.keys():
- vals = self.__msg.get_all(k)
- if len(vals) == 1:
- d['msg_'+k.lower()] = vals[0]
- else:
- d['allmsg_'+k.lower()] = COMMASPACE.join(vals)
- return d