diff --git a/jmc.xml b/jmc.xml
index a34aad1..55ea976 100644
--- a/jmc.xml
+++ b/jmc.xml
@@ -17,6 +17,6 @@
./spool/jabber
./run/jabber/jmc.pid
- 5
+ 1
iso-8859-1
diff --git a/src/jmc/jabber/component.py b/src/jmc/jabber/component.py
index 27c8a24..e1506b0 100644
--- a/src/jmc/jabber/component.py
+++ b/src/jmc/jabber/component.py
@@ -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)
diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py
index 1bc65b8..1c47536 100644
--- a/src/jmc/jabber/tests/component.py
+++ b/src/jmc/jabber/tests/component.py
@@ -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)