--- a/VirtualMailManager/MailLocation.py Mon Mar 01 05:31:43 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-# -*- coding: UTF-8 -*-
-# Copyright (c) 2008 - 2010, Pascal Volk
-# See COPYING for distribution information.
-
-"""Virtual Mail Manager's MailLocation class to manage the mail_location
-for accounts."""
-
-import re
-
-import VirtualMailManager.constants.ERROR as ERR
-from VirtualMailManager.errors import MailLocationError as MLE
-
-RE_MAILLOCATION = """^\w{1,20}$"""
-
-class MailLocation(object):
- """A wrapper class thats provide access to the maillocation table"""
- __slots__ = ('__id', '__maillocation', '_dbh')
- def __init__(self, dbh, mid=None, maillocation=None):
- """Creates a new MailLocation instance.
-
- Either mid or maillocation must be specified.
-
- Keyword arguments:
- dbh -- a pyPgSQL.PgSQL.connection
- mid -- the id of a maillocation (long)
- maillocation -- the value of the maillocation (str)
- """
- self._dbh = dbh
- if mid is None and maillocation is None:
- raise MLE(_('Either mid or maillocation must be specified.'),
- ERR.MAILLOCATION_INIT)
- elif mid is not None:
- try:
- self.__id = long(mid)
- except ValueError:
- raise MLE(_('mid must be an int/long.'), ERR.MAILLOCATION_INIT)
- self._loadByID()
- else:
- if re.match(RE_MAILLOCATION, maillocation):
- self.__maillocation = maillocation
- self._loadByName()
- else:
- raise MLE(
- _(u'Invalid folder name ā%sā, it may consist only of\n\
-1 - 20 single byte characters (A-Z, a-z, 0-9 and _).') % maillocation,
- ERR.MAILLOCATION_INIT)
-
- def _loadByID(self):
- dbc = self._dbh.cursor()
- dbc.execute('SELECT maillocation FROM maillocation WHERE mid = %s',
- self.__id)
- result = dbc.fetchone()
- dbc.close()
- if result is not None:
- self.__maillocation = result[0]
- else:
- raise MLE(_('Unknown mid specified.'), ERR.UNKNOWN_MAILLOCATION_ID)
-
- def _loadByName(self):
- dbc = self._dbh.cursor()
- dbc.execute('SELECT mid FROM maillocation WHERE maillocation = %s',
- self.__maillocation)
- result = dbc.fetchone()
- dbc.close()
- if result is not None:
- self.__id = result[0]
- else:
- self._save()
-
- def _save(self):
- dbc = self._dbh.cursor()
- dbc.execute("SELECT nextval('maillocation_id')")
- self.__id = dbc.fetchone()[0]
- dbc.execute('INSERT INTO maillocation(mid,maillocation) VALUES(%s,%s)',
- self.__id, self.__maillocation)
- self._dbh.commit()
- dbc.close()
-
- def getID(self):
- """Returns the unique ID of the maillocation."""
- return self.__id
-
- def getMailLocation(self):
- """Returns the value of maillocation, ex: 'Maildir'"""
- return self.__maillocation
-