'create_optional_types_and_functions.pgsql'
- Added function postfix_virtual_alias_map() any type recipient_destination
#!/usr/bin/env python# -*- coding: UTF-8 -*-# Copyright 2008 VEB IT# See COPYING for distribution information.# $Id$"""Virtual Mail Manager's AliasDomain class to manage alias domains."""fromconstants.VERSIONimportVERSION__author__='Pascal Volk <p.volk@veb-it.de>'__version__=VERSION__revision__='rev '+'$Rev$'.split()[1]__date__='$Date$'.split()[1]fromExceptionsimportVMMAliasDomainExceptionasVADEimportconstants.ERRORasERRimportVirtualMailManagerasVMMclassAliasDomain:"""Class to manage e-mail alias domains."""def__init__(self,dbh,domainname,targetDomain=None):self._dbh=dbhself.__name=VMM.VirtualMailManager.chkDomainname(domainname)self.__gid=0self._domain=targetDomainself._exists()def_exists(self):dbc=self._dbh.cursor()dbc.execute('SELECT gid, is_primary FROM domain_name WHERE domainname\ = %s',self.__name)alias=dbc.fetchone()dbc.close()ifaliasisnotNone:self.__gid,primary=aliasifprimary:raiseVADE(_(u"The domain »%s« is a primary domain.")%self.__name,ERR.ALIASDOMAIN_ISDOMAIN)defsave(self):ifself.__gid>0:raiseVADE(_(u'The alias domain »%s« already exists.')%self.__name,ERR.ALIASDOMAIN_EXISTS)ifself._domainisNone:raiseVADE(_(u'No destination domain for alias domain denoted.'),ERR.ALIASDOMAIN_NO_DOMDEST)ifself._domain._id<1:raiseVADE(_(u"The target domain »%s« doesn't exist yet.")%self._domain._name,ERR.NO_SUCH_DOMAIN)dbc=self._dbh.cursor()dbc.execute('INSERT INTO domain_name (domainname, gid, is_primary)\ VALUES (%s, %s, FALSE)',self.__name,self._domain._id)self._dbh.commit()dbc.close()definfo(self):ifself.__gid>0:dbc=self._dbh.cursor()dbc.execute('SELECT domainname FROM domain_name WHERE gid = %s\ AND is_primary',self.__gid)domain=dbc.fetchone()dbc.close()ifdomainisnotNone:return{'alias':self.__name,'domain':domain[0]}else:# an almost unlikely case, isn't it?raiseVADE(_(u'There is no primary domain for the alias domain »%s«.')\%self.__name,ERR.NO_SUCH_DOMAIN)else:raiseVADE(_(u"The alias domain »%s« doesn't exist yet.")%self.__name,ERR.NO_SUCH_ALIASDOMAIN)defdelete(self):ifself.__gid>0:dbc=self._dbh.cursor()dbc.execute('DELETE FROM domain_name WHERE domainname = %s\ AND NOT is_primary',self.__name)ifdbc.rowcount>0:self._dbh.commit()else:raiseVADE(_(u"The alias domain »%s« doesn't exist yet.")%self.__name,ERR.NO_SUCH_ALIASDOMAIN)