# HG changeset patch # User Pascal Volk # Date 1267626750 0 # Node ID a7b000ca4ac9a7e9f547021ce5332e4def5b28b3 # Parent 87db9f1f95eaedf94365be9aa7a85c73ce7463b3 VMM/maillocation: MailLocation.__init__(): take a 'format' name, instead of a 'directory' name. - added function known_format() to the module. VMM/Account: Adjusted to above changes. diff -r 87db9f1f95ea -r a7b000ca4ac9 VirtualMailManager/Account.py --- a/VirtualMailManager/Account.py Tue Mar 02 19:24:36 2010 +0000 +++ b/VirtualMailManager/Account.py Wed Mar 03 14:32:30 2010 +0000 @@ -8,8 +8,7 @@ from VirtualMailManager.Domain import Domain from VirtualMailManager.EmailAddress import EmailAddress from VirtualMailManager.errors import AccountError as AccE -from VirtualMailManager.maillocation import MailLocation, MAILDIR_NAME, \ - MBOX_NAME, MDBOX_NAME, SDBOX_NAME +from VirtualMailManager.maillocation import MailLocation, known_format from VirtualMailManager.Transport import Transport @@ -76,12 +75,11 @@ dbc.close() def _prepare(self, maillocation): - if not maillocation.lower() in map(lambda x: x.lower(), (MAILDIR_NAME, - MBOX_NAME, MDBOX_NAME, SDBOX_NAME)): - raise AccE(_(u'Unknown mail_location directory name: %r') % + if not known_format(maillocation): + raise AccE(_(u'Unknown mail_location mailbox format: %r') % maillocation, ERR.UNKNOWN_MAILLOCATION_NAME) self._setID() - self._mid = MailLocation(type_=maillocation).mid + self._mid = MailLocation(format=maillocation).mid def _switchState(self, state, dcvers, service): if not isinstance(state, bool): diff -r 87db9f1f95ea -r a7b000ca4ac9 VirtualMailManager/maillocation.py --- a/VirtualMailManager/maillocation.py Tue Mar 02 19:24:36 2010 +0000 +++ b/VirtualMailManager/maillocation.py Wed Mar 03 14:32:30 2010 +0000 @@ -13,9 +13,8 @@ from VirtualMailManager.pycompat import any -__all__ = ('MailLocation', - 'MAILDIR_ID', 'MBOX_ID', 'MDBOX_ID', 'SDBOX_ID', - 'MAILDIR_NAME', 'MBOX_NAME', 'MDBOX_NAME', 'SDBOX_NAME') +__all__ = ('MailLocation', 'known_format', + 'MAILDIR_ID', 'MBOX_ID', 'MDBOX_ID', 'SDBOX_ID') MAILDIR_ID = 0x1 MBOX_ID = 0x2 @@ -28,20 +27,20 @@ _storage = { MAILDIR_ID: dict(dovecot_version=10, postfix=True, prefix='maildir:', - directory=MAILDIR_NAME), + directory=MAILDIR_NAME, mid=MAILDIR_ID), MBOX_ID: dict(dovecot_version=10, postfix=True, prefix='mbox:', - directory=MBOX_NAME), + directory=MBOX_NAME, mid=MBOX_ID), MDBOX_ID: dict(dovecot_version=20, postfix=False, prefix='mdbox:', - directory=MDBOX_NAME), + directory=MDBOX_NAME, mid=MDBOX_ID), SDBOX_ID: dict(dovecot_version=12, postfix=False, prefix='dbox:', - directory=SDBOX_NAME), + directory=SDBOX_NAME, mid=SDBOX_ID), } -_type_id = { +_format_id = { 'maildir': MAILDIR_ID, - MBOX_NAME: MBOX_ID, - MDBOX_NAME: MDBOX_ID, - SDBOX_NAME: SDBOX_ID, + 'mbox': MBOX_ID, + 'mdbox': MDBOX_ID, + 'dbox': SDBOX_ID, } @@ -49,26 +48,26 @@ """A small class for mail_location relevant information.""" __slots__ = ('_info') - def __init__(self, mid=None, type_=None): + def __init__(self, mid=None, format=None): """Creates a new MailLocation instance. - Either mid or type_ must be specified. + Either a mid or the format must be specified. Keyword arguments: mid -- the id of a mail_location (int) one of the maillocation constants: `MAILDIR_ID`, `MBOX_ID`, `MDBOX_ID` and `SDBOX_ID` - type_ -- the type/mailbox format of the mail_location (str) - one of the maillocation constants: `MAILDIR_NAME`, `MBOX_NAME`, - `MDBOX_NAME` and `SDBOX_NAME` + format -- the mailbox format of the mail_location. One out of: + ``maildir``, ``mbox``, ``dbox`` and ``mdbox``. """ - assert any((mid, type_)) + assert any((mid, format)) if mid: assert isinstance(mid, (int, long)) and mid in _storage self._info = _storage[mid] else: - assert isinstance(type_, basestring) and type_.lower() in _type_id - self._info = _storage[_type_id[type_.lower()]] + assert isinstance(format, basestring) and \ + format.lower() in _format_id + self._info = _storage[_format_id[format.lower()]] def __str__(self): return '%(prefix)s~/%(directory)s' % self._info @@ -102,4 +101,9 @@ @property def mid(self): """The mail_location's unique ID.""" - return _type_id[self._info['directory'].lower()] + return self._info['mid'] + + +def known_format(format): + """Checks if the mailbox *format* is known, returns bool.""" + return format.lower() in _format_id