Move message format from Feeder to Sender class

darcs-hash:20070515154957-86b55-3ad909492a4251f2f9620ee30818bd038babc986.gz
This commit is contained in:
David Rousselie
2007-05-15 17:49:57 +02:00
parent 0f95cc4678
commit 1ff9c4c1f7
3 changed files with 60 additions and 64 deletions

View File

@@ -26,7 +26,7 @@ import logging
from pyxmpp.message import Message
from jcl.model.account import PresenceAccount
from jcl.jabber.feeder import FeederComponent, Feeder, Sender
from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, HeadlineSender
from jmc.model.account import MailAccount, IMAPAccount, POP3Account
from jmc.lang import Lang
@@ -68,19 +68,18 @@ class MailFeeder(Feeder):
"""For live email checking account, mark emails received while
offline as read.
Return a boolean to continue mail checking or not (if waiting for password)"""
result = []
if _account.password is None:
if not _account.waiting_password_reply:
result.extend(self.component.account_manager.ask_password(_account, \
_account.default_lang_class))
return (False, result)
self.component.send_stanzas(self.component.account_manager.ask_password(_account, \
_account.default_lang_class))
return False
try:
_account.connect()
_account.mark_all_as_read()
_account.disconnect()
_account.first_check = False
_account.in_error = False
return (True, result)
return True
except Exception, e:
if _account.connected:
try:
@@ -88,8 +87,8 @@ class MailFeeder(Feeder):
except:
# We have done everything we could
_account.connected = False
result.extend(self.component.account_manager.send_error(_account, e))
return (False, result)
self.component.send_error(_account, e)
return False
def feed(self, _account):
"""Check for new emails for given MailAccount and return a list of
@@ -97,8 +96,7 @@ class MailFeeder(Feeder):
self.__logger.debug("MailFeeder.feed")
result = []
if _account.first_check and _account.live_email_only:
(continue_checking, to_send) = self.initialize_live_email(_account)
result.extend(to_send)
continue_checking = self.initialize_live_email(_account)
if not continue_checking:
return result
_account.lastcheck += 1
@@ -108,8 +106,8 @@ class MailFeeder(Feeder):
if action != PresenceAccount.DO_NOTHING:
try:
if _account.password is None:
result.extend(self.component.account_manager.ask_password(_account, \
_account.default_lang_class))
self.component.send_stanzas(self.component.account_manager.ask_password(_account, \
_account.default_lang_class))
return result
self.__logger.debug("Checking " + _account.name)
self.__logger.debug("\t" + _account.login \
@@ -121,10 +119,8 @@ class MailFeeder(Feeder):
mail_index = _account.get_next_mail_index(mail_list)
while mail_index is not None:
(body, email_from) = _account.get_mail(mail_index)
result.append(Message(from_jid = _account.jid, \
to_jid = _account.user_jid, \
subject = _account.default_lang_class.new_mail_subject % (email_from), \
body = body))
result.append((_account.default_lang_class.new_mail_subject % (email_from), \
body))
mail_index = _account.get_next_mail_index(mail_list)
elif action == MailAccount.DIGEST:
body = ""
@@ -137,11 +133,8 @@ class MailFeeder(Feeder):
mail_index = _account.get_next_mail_index(mail_list)
new_mail_count += 1
if body != "":
result.append(Message(from_jid = _account.jid, \
to_jid = _account.user_jid, \
stanza_type = "headline", \
subject = _account.default_lang_class.new_digest_subject % (new_mail_count), \
body = body))
result.append((_account.default_lang_class.new_digest_subject % (new_mail_count), \
body))
else:
raise Exception("Unkown action: " + str(action)
+ "\nPlease reconfigure account.")
@@ -155,13 +148,16 @@ class MailFeeder(Feeder):
except:
# We have done everything we could
_account.connected = False
result.extend(self.component.account_manager.send_error(_account, e))
self.component.send_error(_account, e)
return result
class MailSender(Sender):
class MailSender(MessageSender, HeadlineSender):
"""Send emails messages to jabber users"""
def send(self, to_account, data):
def send(self, to_account, subject, body):
"""Send given emails (in data) as Jabber messages"""
pass
if to_account.action == MailAccount.RETRIEVE:
MessageSender.send(self, to_account, subject, body)
elif to_account.action == MailAccount.DIGEST:
HeadlineSender.send(self, to_account, subject, body)

View File

@@ -182,9 +182,11 @@ class MailComponent_TestCase(unittest.TestCase):
account11.live_email_only = True
account11.password = None
result = self.comp.feeder.feed(account11)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
self.assertEquals(len(result), 0)
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertTrue(account11.first_check)
self.assertTrue(account11.waiting_password_reply)
self.assertFalse(account11.in_error)
@@ -257,9 +259,11 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertFalse(account11.waiting_password_reply)
result = self.comp.feeder.feed(account11)
self.assertFalse(account11.in_error)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
self.assertEquals(len(result), 0)
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertEquals(account11.lastcheck, 0)
self.assertFalse(account11.connected)
self.assertFalse(account11.has_connected)
@@ -279,9 +283,11 @@ class MailComponent_TestCase(unittest.TestCase):
account11.get_mail_list = lambda: []
result = self.comp.feeder.feed(account11)
self.assertTrue(account11.in_error)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
self.assertEquals(len(result), 0)
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertEquals(account11.lastcheck, 0)
self.assertFalse(account11.connected)
self.assertTrue(account11.has_connected)
@@ -331,20 +337,14 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertTrue(account11.has_connected)
self.assertEquals(len(self.comp.stream.sent), 0)
self.assertEquals(len(result), 2)
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].stanza_type, "message")
self.assertEquals(result[0].get_subject(), \
self.assertEquals(result[0][0], \
account11.default_lang_class.new_mail_subject \
% ("from1@test.com"))
self.assertEquals(result[0].get_body(), "body1")
self.assertEquals(result[1].get_from(), "account11@jmc.test.com")
self.assertEquals(result[1].get_to(), "test1@test.com")
self.assertEquals(result[1].stanza_type, "message")
self.assertEquals(result[1].get_subject(), \
self.assertEquals(result[0][1], "body1")
self.assertEquals(result[1][0], \
account11.default_lang_class.new_mail_subject \
% ("from2@test.com"))
self.assertEquals(result[1].get_body(), "body2")
self.assertEquals(result[1][1], "body2")
del account.hub.threadConnection
def test_feed_digest_no_mail(self):
@@ -391,13 +391,10 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertTrue(account11.has_connected)
self.assertEquals(len(self.comp.stream.sent), 0)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].stanza_type, "message")
self.assertEquals(result[0].get_subject(), \
self.assertEquals(result[0][0], \
account11.default_lang_class.new_digest_subject \
% (2))
self.assertEquals(result[0].get_body(), \
self.assertEquals(result[0][1], \
"body1\n----------------------------------\nbody2\n----------------------------------\n")
del account.hub.threadConnection
@@ -414,9 +411,8 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertFalse(account11.in_error)
account11.live_email_only = True
account11.password = "password"
(continue_checking, result) = self.comp.feeder.initialize_live_email(account11)
continue_checking = self.comp.feeder.initialize_live_email(account11)
self.assertEquals(continue_checking, True)
self.assertEquals(result, [])
self.assertFalse(account11.first_check)
self.assertFalse(account11.waiting_password_reply)
self.assertFalse(account11.in_error)
@@ -438,11 +434,12 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertFalse(account11.in_error)
account11.live_email_only = True
account11.password = "password"
(continue_checking, result) = self.comp.feeder.initialize_live_email(account11)
continue_checking = self.comp.feeder.initialize_live_email(account11)
self.assertEquals(continue_checking, False)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertTrue(account11.first_check)
self.assertFalse(account11.waiting_password_reply)
self.assertTrue(account11.in_error)
@@ -464,11 +461,12 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertFalse(account11.in_error)
account11.live_email_only = True
account11.password = "password"
(continue_checking, result) = self.comp.feeder.initialize_live_email(account11)
continue_checking = self.comp.feeder.initialize_live_email(account11)
self.assertEquals(continue_checking, False)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertTrue(account11.first_check)
self.assertFalse(account11.waiting_password_reply)
self.assertTrue(account11.in_error)
@@ -490,10 +488,12 @@ class MailComponent_TestCase(unittest.TestCase):
self.assertFalse(account11.in_error)
account11.live_email_only = True
account11.password = "password"
(continue_checking, result) = self.comp.feeder.initialize_live_email(account11)
self.assertEquals(len(result), 1)
self.assertEquals(result[0].get_to(), "test1@test.com")
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
continue_checking = self.comp.feeder.initialize_live_email(account11)
self.assertFalse(continue_checking)
sent = self.comp.stream.sent
self.assertEquals(len(sent), 1)
self.assertEquals(sent[0].get_to(), "test1@test.com")
self.assertEquals(sent[0].get_from(), "account11@jmc.test.com")
self.assertEquals(continue_checking, False)
self.assertTrue(account11.first_check)
self.assertFalse(account11.waiting_password_reply)