VirtualMailManager/Alias.py
branchv0.6.x
changeset 203 4d601240b7db
parent 198 02d467e4fbab
child 213 1a9fee6b93bc
--- a/VirtualMailManager/Alias.py	Fri Feb 12 04:26:30 2010 +0000
+++ b/VirtualMailManager/Alias.py	Fri Feb 12 09:10:54 2010 +0000
@@ -23,10 +23,9 @@
     __slots__ = ('_addr', '_dests', '_gid', '_dbh')
 
     def __init__(self, dbh, address):
-        if isinstance(address, EmailAddress):
-            self._addr = address
-        else:
+        if not isinstance(address, EmailAddress):
             raise TypeError("Argument 'address' is not an EmailAddress")
+        self._addr = address
         self._dbh = dbh
         self._gid = get_gid(self._dbh, self._addr.domainname)
         self._dests = []
@@ -53,19 +52,19 @@
         if dcount == limit:
             failed = True
             errmsg = _(
-u"""Can't add new destination to alias “%(address)s”.
+u"""Can't add new destination to alias %(address)r.
 Currently this alias expands into %(count)i/%(limit)i recipients.
 One more destination will render this alias unusable.
 Hint: Increase Postfix' virtual_alias_expansion_limit""")
         elif dcount > limit:
             failed = True
             errmsg = _(
-u"""Can't add new destination to alias “%(address)s”.
+u"""Can't add new destination to alias %(address)r.
 This alias already exceeds it's expansion limit (%(count)i/%(limit)i).
 So its unusable, all messages addressed to this alias will be bounced.
 Hint: Delete some destination addresses.""")
         if failed:
-            raise VMMAE(errmsg % {'address': self._addr, 'count': dcount,
+            raise VMMAE(errmsg % {'address': str(self._addr), 'count': dcount,
                                   'limit': limit},
                         ALIAS_EXCEEDS_EXPANSION_LIMIT)
 
@@ -74,7 +73,7 @@
         ``None``. If ``destination`` is None, the alias with all it's
         destination addresses will be deleted."""
         dbc = self._dbh.cursor()
-        if destination is None:
+        if not destination:
             dbc.execute("DELETE FROM alias WHERE gid=%s AND address=%s",
                         self._gid, self._addr.localpart)
         else:
@@ -96,50 +95,49 @@
         if self._addr == destination:
             raise VMMAE(_(u"Address and destination are identical."),
                         ALIAS_ADDR_DEST_IDENTICAL)
-        if not destination in self._dests:
-            self.__check_expansion(expansion_limit)
-            dbc = self._dbh.cursor()
-            dbc.execute('INSERT INTO alias (gid, address, destination) \
+        if destination in self._dests:
+            raise VMMAE(_(
+                u'The alias %(a)r has already the destination %(d)r.') %
+                        {'a': str(self._addr), 'd': str(destination)},
+                        ALIAS_EXISTS)
+        self.__check_expansion(expansion_limit)
+        dbc = self._dbh.cursor()
+        dbc.execute('INSERT INTO alias (gid, address, destination) \
 VALUES (%s, %s, %s)',
-                        self._gid, self._addr.localpart, str(destination))
-            self._dbh.commit()
-            dbc.close()
-            self._dests.append(destination)
-        else:
-            raise VMMAE(_(
-                u'The alias “%(a)s” has already the destination “%(d)s”.') %
-                        {'a': self._addr, 'd': destination}, ALIAS_EXISTS)
+                    self._gid, self._addr.localpart, str(destination))
+        self._dbh.commit()
+        dbc.close()
+        self._dests.append(destination)
 
     def delDestination(self, destination):
         """Deletes the specified ``destination`` address from the alias."""
         if not isinstance(destination, EmailAddress):
             raise TypeError("Argument 'destination' is not an EmailAddress")
         if not self._dests:
-            raise VMMAE(_(u"The alias “%s” doesn't exist.") % self._addr,
+            raise VMMAE(_(u"The alias %r doesn't exist.") % str(self._addr),
                         NO_SUCH_ALIAS)
         if not destination in self._dests:
-            raise VMMAE(_(u"The address “%(d)s” isn't a destination of \
-the alias “%(a)s”.") %
-                        {'a': self._addr, 'd': destination}, NO_SUCH_ALIAS)
+            raise VMMAE(_(u"The address %(d)r isn't a destination of \
+the alias %(a)r.") %
+                        {'a': str(self._addr), 'd': str(destination)},
+                        NO_SUCH_ALIAS)
         self.__delete(destination)
         self._dests.remove(destination)
 
     def getDestinations(self):
         """Returns an iterator for all destinations of the alias."""
-        if self._dests:
-            return iter(self._dests)
-        else:
-            raise VMMAE(_(u"The alias “%s” doesn't exist.") % self._addr,
+        if not self._dests:
+            raise VMMAE(_(u"The alias %r doesn't exist.") % str(self._addr),
                         NO_SUCH_ALIAS)
+        return iter(self._dests)
 
     def delete(self):
         """Deletes the alias with all it's destinations."""
-        if self._dests:
-            self.__delete()
-            del self._dests[:]
-        else:
-            raise VMMAE(_(u"The alias “%s” doesn't exist.") % self._addr,
+        if not self._dests:
+            raise VMMAE(_(u"The alias %r doesn't exist.") % str(self._addr),
                         NO_SUCH_ALIAS)
+        self.__delete()
+        del self._dests[:]
 
 
 del _