* 'vmm'
- _getOrder() Respects now vmm.cfg/maildir/diskusage settings
* 'VirtualMailManager/VirtualMailManager.py'
- Adds a warning if a directory not exists
+ VirtualMailManager.__getDiskUsage()
+ VirtualMailManager.__maildirdelete()
+ VirtualMailManager.__domdirdelete()
- Implemented
+ VirtualMailManager.__isdir()
+ VirtualMailManager.cfgGetBoolean()
+ VirtualMailManager.cfgGetInt()
+ VirtualMailManager.cfgGetString()
* 'po/de.po'
* 'po/vmm.pot'
- updated
#!/usr/bin/env python# -*- coding: UTF-8 -*-# Copyright 2007-2008 VEB IT# See COPYING for distribution information.# $Id$"""Virtual Mail Manager's Alias class to manage e-mail aliases."""fromconstants.VERSIONimportVERSION__author__='Pascal Volk <p.volk@veb-it.de>'__version__=VERSION__revision__='rev '+'$Rev$'.split()[1]__date__='$Date$'.split()[1]importgettextfromExceptionsimportVMMAliasExceptionfromDomainimportDomainimportconstants.ERRORasERRgettext.bindtextdomain('vmm','/usr/local/share/locale')gettext.textdomain('vmm')_=gettext.gettextclassAlias:"""Class to manage e-mail accounts."""def__init__(self,dbh,address,destination=None):ifaddress==destination:raiseVMMAliasException((_('Address and destination are identical.'),ERR.ALIAS_ADDR_DEST_IDENTICAL))self._dbh=dbhself._addr=addressself._dest=destinationself._localpart=Noneself._gid=0self._isNew=Falseself._setAddr()ifnotself._destisNone:self._exists()ifself._isAccount():raiseVMMAliasException((_(u"There is already an account with address '%s'")%self._addr,ERR.ACCOUNT_EXISTS))def_exists(self):dbc=self._dbh.cursor()dbc.execute("SELECT gid FROM alias WHERE gid=%s AND address=%s\ AND destination=%s",self._gid,self._localpart,self._dest)gid=dbc.fetchone()dbc.close()ifgidisNone:self._isNew=Trueelse:self._isNew=Falsedef_isAccount(self):dbc=self._dbh.cursor()dbc.execute("SELECT uid FROM users WHERE gid=%s AND local_part=%s",self._gid,self._localpart)uid=dbc.fetchone()dbc.close()ifuidisnotNone:returnTrueelse:returnFalsedef_setAddr(self):self._localpart,d=self._addr.split('@')dom=Domain(self._dbh,d)self._gid=dom.getID()ifself._gid==0:raiseVMMAliasException((_(u"Domain '%s' doesn't exist.")%d,ERR.NO_SUCH_DOMAIN))defsave(self):ifself._destisNone:raiseVMMAliasException((_('No destination address for alias denoted.'),ERR.ALIAS_MISSING_DEST))ifself._isNew:dbc=self._dbh.cursor()dbc.execute("INSERT INTO alias (gid, address, destination) VALUES\ (%s, %s, %s)",self._gid,self._localpart,self._dest)self._dbh.commit()dbc.close()else:raiseVMMAliasException((_("Alias already exists."),ERR.ALIAS_EXISTS))defgetInfo(self):dbc=self._dbh.cursor()dbc.execute('SELECT destination FROM alias WHERE gid=%s AND address=%s',self._gid,self._localpart)destinations=dbc.fetchall()dbc.close()iflen(destinations)>0:targets=[]fordestinationindestinations:targets.append(destination[0])returntargetselse:raiseVMMAliasException((_("Alias doesn't exists"),ERR.NO_SUCH_ALIAS))defdelete(self):dbc=self._dbh.cursor()ifself._destisNone:dbc.execute("DELETE FROM alias WHERE gid=%s AND address=%s",self._gid,self._localpart)else:dbc.execute("DELETE FROM alias WHERE gid=%s AND address=%s AND \ destination=%s",self._gid,self._localpart,self._dest)rowcount=dbc.rowcountdbc.close()ifrowcount>0:self._dbh.commit()else:raiseVMMAliasException((_("Alias doesn't exists"),ERR.NO_SUCH_ALIAS))