* 'create_tables.pgsql'
- Added view vmm_domain_info
* 'VirtualMailManager/Alias.py'
- Removed attribute Alias._aid
- Removed parameter basedir from Alias.__init__() and Alias._setAddr()
* 'VirtualMailManager/MailLocation.py'
- Fixed typo in MailLocation.__init__()
* 'VirtualMailManager/Account.py'
- Integrated Transport- and MailLocation-stuff
- Removed attributes: Account._base and Account._home
* 'VirtualMailManager/VirtualMailManager.py'
- some small fixes
* 'VirtualMailManager/Domain.py'
- Added Transport-stuff
* 'vmm.cfg'
- 'Added option transport in section misc'
#!/usr/bin/env python# -*- coding: UTF-8 -*-# Copyright 2008 VEB IT# See COPYING for distribution information.# $Id$"""Virtual Mail Manager's Transport class to manage the transport fordomains and accounts."""fromconstants.VERSIONimportVERSION__author__='Pascal Volk <p.volk@veb-it.de>'__version__=VERSION__revision__='rev '+'$Rev$'.split()[1]__date__='$Date$'.split()[1]fromExceptionsimportVMMTransportExceptionimportconstants.ERRORasERRclassTransport:"""A wrapper class thats provide access to the transport table"""def__init__(self,dbh,tid=None,transport=None):"""Creates a new Transport instance. Either tid or transport must be specified. Keyword arguments: dbh -- a pyPgSQL.PgSQL.connection tid -- the id of a transport (long) transport -- the value of the transport (str) """self._dbh=dbhiftidisNoneandtransportisNone:raiseVMMTransportException(('Either tid or transport must be specified.',ERR.TRANSPORT_INIT))eliftidisnotNone:try:self.__id=long(tid)exceptValueError:raiseVMMTransportException(('tid must be an int/long.',ERR.TRANSPORT_INIT))self._loadByID()else:self.__transport=transportself._loadByName()def_loadByID(self):dbc=self._dbh.cursor()dbc.execute('SELECT transport FROM transport WHERE tid = %s',self.__id)result=dbc.fetchone()dbc.close()ifresultisnotNone:self.__transport=result[0]else:raiseVMMTransportException(('Unknown tid specified.',ERR.UNKNOWN_TRANSPORT_ID))def_loadByName(self):dbc=self._dbh.cursor()dbc.execute('SELECT tid FROM transport WHERE transport = %s',self.__transport)result=dbc.fetchone()dbc.close()ifresultisnotNone:self.__id=result[0]else:self._save()def_save(self):dbc=self._dbh.cursor()dbc.execute("SELECT nextval('transport_id')")self.__id=dbc.fetchone()[0]dbc.execute('INSERT INTO transport (tid, transport) VALUES (%s, %s)',self.__id,self.__transport)self._dbh.commit()dbc.close()defgetID(self):"""Returns the unique ID of the transport."""returnself.__iddefgetTransport(self):"""Returns the value of transport, ex: 'dovecot:'"""returnself.__transport