v0.1 to v0.2 storage auto convertion

- convert automatically (while loading) registered.db v0.1 to v0.2 format

darcs-hash:20060129152338-86b55-39ba1c1c7ecd5d053d2b4a578253335a2c0747d6.gz
This commit is contained in:
David Rousselie
2006-01-29 16:23:38 +01:00
parent e02cde5c93
commit 06fd569537
5 changed files with 81 additions and 33 deletions

View File

@@ -71,16 +71,15 @@ class MailComponent(Component):
self.__interval = int(config.get_content("config/check_interval"))
self.__config = config
spool_dir = config.get_content("config/spooldir") + "/" + \
config.get_content("config/jabber/service")
try:
self.__storage = globals()[config.get_content("config/storage") + "Storage"]()
self.__storage = globals()[config.get_content("config/storage") \
+ "Storage"](2, spool_dir = spool_dir)
except:
print >>sys.stderr, "Cannot find " \
+ config.get_content("config/storage") + "Storage class"
exit(1)
self.__spool_dir = config.get_content("config/spooldir") + "/" + \
config.get_content("config/jabber/service")
self.__storage.spool_dir = self.__spool_dir
self.__storage.nb_pk_fields = 2
# dump registered accounts (save) every hour
self.__count = 60
self.running = False

View File

@@ -20,6 +20,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
import mailconnection
from mailconnection import IMAPConnection, POP3Connection
""" Static method to return an empty MailConnection object of given type
@@ -62,6 +63,15 @@ def str_to_mail_connection(connection_string):
password = arg_list.pop()
host = arg_list.pop()
port = int(arg_list.pop())
chat_action = None
online_action = None
away_action = None
xa_action = None
dnd_action = None
offline_action = None
interval = None
if type[0:4] == "imap":
if len(arg_list) == 8:
chat_action = int(arg_list.pop())
online_action = int(arg_list.pop())
away_action = int(arg_list.pop())
@@ -69,35 +79,41 @@ def str_to_mail_connection(connection_string):
dnd_action = int(arg_list.pop())
offline_action = int(arg_list.pop())
interval = int(arg_list.pop())
result = None
if type == "imap":
else:
retrieve = bool(arg_list.pop() == "True")
if retrieve:
chat_action = online_action = away_action = xa_action = dnd_action = mailconnection.RETRIEVE
else:
chat_action = online_action = away_action = xa_action = dnd_action = mailconnection.DIGEST
offline_action = mailconnection.DO_NOTHING
mailbox = arg_list.pop()
result = IMAPConnection(login = login, \
password = password, \
host = host, \
ssl = False, \
ssl = (len(type) == 5), \
port = port, \
mailbox = mailbox)
elif type == "imaps":
mailbox = arg_list.pop()
result = IMAPConnection(login = login, \
password = password, \
host = host, \
port = port, \
ssl = True, \
mailbox = mailbox)
elif type == "pop3":
else:
if len(arg_list) == 7:
chat_action = int(arg_list.pop())
online_action = int(arg_list.pop())
away_action = int(arg_list.pop())
xa_action = int(arg_list.pop())
dnd_action = int(arg_list.pop())
offline_action = int(arg_list.pop())
interval = int(arg_list.pop())
else:
retrieve = bool(arg_list.pop() == "True")
if retrieve:
chat_action = online_action = away_action = xa_action = dnd_action = mailconnection.RETRIEVE
else:
chat_action = online_action = away_action = xa_action = dnd_action = mailconnection.DIGEST
offline_action = mailconnection.DO_NOTHING
result = POP3Connection(login = login, \
password = password, \
host = host, \
port = port, \
ssl = False)
elif type == "pop3s":
result = POP3Connection(login = login, \
password = password, \
host = host, \
port = port, \
ssl = True)
ssl = (len(type) == 5))
if result is None:
raise Exception, "Connection type \"" + type + "\" unknown"
result.chat_action = chat_action
@@ -106,6 +122,7 @@ def str_to_mail_connection(connection_string):
result.xa_action = xa_action
result.dnd_action = dnd_action
result.offline_action = offline_action
if interval is not None:
result.interval = interval
return result

View File

@@ -56,6 +56,7 @@ class Storage(UserDict):
return self._spool_dir
def set_spool_dir(self, spool_dir):
print "setting spool dir to " + spool_dir
self._spool_dir = spool_dir
if not os.path.isdir(self._spool_dir):
os.makedirs(self._spool_dir)

View File

@@ -63,7 +63,7 @@ if __name__ == '__main__':
component2_suite, \
storage_suite, \
dbmstorage_suite))
test_support.run_suite(mail_connection_suite)
test_support.run_suite(mc_factory_suite)
# coverage.stop()
# coverage.analysis(jabber.mailconnection_factory)

View File

@@ -41,6 +41,37 @@ class MailConnectionFactory_TestCase(unittest.TestCase):
mc = get_new_mail_connection("pop3s")
self.assertEquals(mc, mc)
def test_str_to_mail_connection_imap_v01_v02(self):
mc = str_to_mail_connection("imap#login#passwd#host#193#True#INBOX")
self.assertEquals(mc.get_type(), "imap")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 193)
self.assertEquals(mc.mailbox, "INBOX")
self.assertEquals(mc.chat_action, mailconnection.RETRIEVE)
self.assertEquals(mc.online_action, mailconnection.RETRIEVE)
self.assertEquals(mc.away_action, mailconnection.RETRIEVE)
self.assertEquals(mc.xa_action, mailconnection.RETRIEVE)
self.assertEquals(mc.dnd_action, mailconnection.RETRIEVE)
self.assertEquals(mc.offline_action, mailconnection.DO_NOTHING)
self.assertEquals(mc.interval, 5)
def test_str_to_mail_connection_pop3_v01_v02(self):
mc = str_to_mail_connection("pop3#login#passwd#host#110#False")
self.assertEquals(mc.get_type(), "pop3")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 110)
self.assertEquals(mc.chat_action, mailconnection.DIGEST)
self.assertEquals(mc.online_action, mailconnection.DIGEST)
self.assertEquals(mc.away_action, mailconnection.DIGEST)
self.assertEquals(mc.xa_action, mailconnection.DIGEST)
self.assertEquals(mc.dnd_action, mailconnection.DIGEST)
self.assertEquals(mc.offline_action, mailconnection.DO_NOTHING)
self.assertEquals(mc.interval, 5)
def test_str_to_mail_connection_imap(self):
mc = str_to_mail_connection("imap#login#passwd#host#193#0#0#0#1#1#2#4#INBOX")
self.assertEquals(mc.get_type(), "imap")