Move message format from Feeder to Sender class
darcs-hash:20070515154957-86b55-3ad909492a4251f2f9620ee30818bd038babc986.gz
This commit is contained in:
2
jmc.xml
2
jmc.xml
@@ -17,6 +17,6 @@
|
|||||||
<spooldir>./spool/jabber</spooldir>
|
<spooldir>./spool/jabber</spooldir>
|
||||||
<pidfile>./run/jabber/jmc.pid</pidfile>
|
<pidfile>./run/jabber/jmc.pid</pidfile>
|
||||||
<!-- default check interval in minutes -->
|
<!-- default check interval in minutes -->
|
||||||
<check_interval>5</check_interval>
|
<check_interval>1</check_interval>
|
||||||
<mail_default_encoding>iso-8859-1</mail_default_encoding>
|
<mail_default_encoding>iso-8859-1</mail_default_encoding>
|
||||||
</config>
|
</config>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import logging
|
|||||||
from pyxmpp.message import Message
|
from pyxmpp.message import Message
|
||||||
|
|
||||||
from jcl.model.account import PresenceAccount
|
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.model.account import MailAccount, IMAPAccount, POP3Account
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
@@ -68,19 +68,18 @@ class MailFeeder(Feeder):
|
|||||||
"""For live email checking account, mark emails received while
|
"""For live email checking account, mark emails received while
|
||||||
offline as read.
|
offline as read.
|
||||||
Return a boolean to continue mail checking or not (if waiting for password)"""
|
Return a boolean to continue mail checking or not (if waiting for password)"""
|
||||||
result = []
|
|
||||||
if _account.password is None:
|
if _account.password is None:
|
||||||
if not _account.waiting_password_reply:
|
if not _account.waiting_password_reply:
|
||||||
result.extend(self.component.account_manager.ask_password(_account, \
|
self.component.send_stanzas(self.component.account_manager.ask_password(_account, \
|
||||||
_account.default_lang_class))
|
_account.default_lang_class))
|
||||||
return (False, result)
|
return False
|
||||||
try:
|
try:
|
||||||
_account.connect()
|
_account.connect()
|
||||||
_account.mark_all_as_read()
|
_account.mark_all_as_read()
|
||||||
_account.disconnect()
|
_account.disconnect()
|
||||||
_account.first_check = False
|
_account.first_check = False
|
||||||
_account.in_error = False
|
_account.in_error = False
|
||||||
return (True, result)
|
return True
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if _account.connected:
|
if _account.connected:
|
||||||
try:
|
try:
|
||||||
@@ -88,8 +87,8 @@ class MailFeeder(Feeder):
|
|||||||
except:
|
except:
|
||||||
# We have done everything we could
|
# We have done everything we could
|
||||||
_account.connected = False
|
_account.connected = False
|
||||||
result.extend(self.component.account_manager.send_error(_account, e))
|
self.component.send_error(_account, e)
|
||||||
return (False, result)
|
return False
|
||||||
|
|
||||||
def feed(self, _account):
|
def feed(self, _account):
|
||||||
"""Check for new emails for given MailAccount and return a list of
|
"""Check for new emails for given MailAccount and return a list of
|
||||||
@@ -97,8 +96,7 @@ class MailFeeder(Feeder):
|
|||||||
self.__logger.debug("MailFeeder.feed")
|
self.__logger.debug("MailFeeder.feed")
|
||||||
result = []
|
result = []
|
||||||
if _account.first_check and _account.live_email_only:
|
if _account.first_check and _account.live_email_only:
|
||||||
(continue_checking, to_send) = self.initialize_live_email(_account)
|
continue_checking = self.initialize_live_email(_account)
|
||||||
result.extend(to_send)
|
|
||||||
if not continue_checking:
|
if not continue_checking:
|
||||||
return result
|
return result
|
||||||
_account.lastcheck += 1
|
_account.lastcheck += 1
|
||||||
@@ -108,8 +106,8 @@ class MailFeeder(Feeder):
|
|||||||
if action != PresenceAccount.DO_NOTHING:
|
if action != PresenceAccount.DO_NOTHING:
|
||||||
try:
|
try:
|
||||||
if _account.password is None:
|
if _account.password is None:
|
||||||
result.extend(self.component.account_manager.ask_password(_account, \
|
self.component.send_stanzas(self.component.account_manager.ask_password(_account, \
|
||||||
_account.default_lang_class))
|
_account.default_lang_class))
|
||||||
return result
|
return result
|
||||||
self.__logger.debug("Checking " + _account.name)
|
self.__logger.debug("Checking " + _account.name)
|
||||||
self.__logger.debug("\t" + _account.login \
|
self.__logger.debug("\t" + _account.login \
|
||||||
@@ -121,10 +119,8 @@ class MailFeeder(Feeder):
|
|||||||
mail_index = _account.get_next_mail_index(mail_list)
|
mail_index = _account.get_next_mail_index(mail_list)
|
||||||
while mail_index is not None:
|
while mail_index is not None:
|
||||||
(body, email_from) = _account.get_mail(mail_index)
|
(body, email_from) = _account.get_mail(mail_index)
|
||||||
result.append(Message(from_jid = _account.jid, \
|
result.append((_account.default_lang_class.new_mail_subject % (email_from), \
|
||||||
to_jid = _account.user_jid, \
|
body))
|
||||||
subject = _account.default_lang_class.new_mail_subject % (email_from), \
|
|
||||||
body = body))
|
|
||||||
mail_index = _account.get_next_mail_index(mail_list)
|
mail_index = _account.get_next_mail_index(mail_list)
|
||||||
elif action == MailAccount.DIGEST:
|
elif action == MailAccount.DIGEST:
|
||||||
body = ""
|
body = ""
|
||||||
@@ -137,11 +133,8 @@ class MailFeeder(Feeder):
|
|||||||
mail_index = _account.get_next_mail_index(mail_list)
|
mail_index = _account.get_next_mail_index(mail_list)
|
||||||
new_mail_count += 1
|
new_mail_count += 1
|
||||||
if body != "":
|
if body != "":
|
||||||
result.append(Message(from_jid = _account.jid, \
|
result.append((_account.default_lang_class.new_digest_subject % (new_mail_count), \
|
||||||
to_jid = _account.user_jid, \
|
body))
|
||||||
stanza_type = "headline", \
|
|
||||||
subject = _account.default_lang_class.new_digest_subject % (new_mail_count), \
|
|
||||||
body = body))
|
|
||||||
else:
|
else:
|
||||||
raise Exception("Unkown action: " + str(action)
|
raise Exception("Unkown action: " + str(action)
|
||||||
+ "\nPlease reconfigure account.")
|
+ "\nPlease reconfigure account.")
|
||||||
@@ -155,13 +148,16 @@ class MailFeeder(Feeder):
|
|||||||
except:
|
except:
|
||||||
# We have done everything we could
|
# We have done everything we could
|
||||||
_account.connected = False
|
_account.connected = False
|
||||||
result.extend(self.component.account_manager.send_error(_account, e))
|
self.component.send_error(_account, e)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
class MailSender(Sender):
|
class MailSender(MessageSender, HeadlineSender):
|
||||||
"""Send emails messages to jabber users"""
|
"""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"""
|
"""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)
|
||||||
|
|
||||||
|
|||||||
@@ -182,9 +182,11 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
account11.live_email_only = True
|
account11.live_email_only = True
|
||||||
account11.password = None
|
account11.password = None
|
||||||
result = self.comp.feeder.feed(account11)
|
result = self.comp.feeder.feed(account11)
|
||||||
self.assertEquals(len(result), 1)
|
self.assertEquals(len(result), 0)
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.first_check)
|
||||||
self.assertTrue(account11.waiting_password_reply)
|
self.assertTrue(account11.waiting_password_reply)
|
||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
@@ -257,9 +259,11 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertFalse(account11.waiting_password_reply)
|
self.assertFalse(account11.waiting_password_reply)
|
||||||
result = self.comp.feeder.feed(account11)
|
result = self.comp.feeder.feed(account11)
|
||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
self.assertEquals(len(result), 1)
|
self.assertEquals(len(result), 0)
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.assertEquals(account11.lastcheck, 0)
|
||||||
self.assertFalse(account11.connected)
|
self.assertFalse(account11.connected)
|
||||||
self.assertFalse(account11.has_connected)
|
self.assertFalse(account11.has_connected)
|
||||||
@@ -279,9 +283,11 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
account11.get_mail_list = lambda: []
|
account11.get_mail_list = lambda: []
|
||||||
result = self.comp.feeder.feed(account11)
|
result = self.comp.feeder.feed(account11)
|
||||||
self.assertTrue(account11.in_error)
|
self.assertTrue(account11.in_error)
|
||||||
self.assertEquals(len(result), 1)
|
self.assertEquals(len(result), 0)
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.assertEquals(account11.lastcheck, 0)
|
||||||
self.assertFalse(account11.connected)
|
self.assertFalse(account11.connected)
|
||||||
self.assertTrue(account11.has_connected)
|
self.assertTrue(account11.has_connected)
|
||||||
@@ -331,20 +337,14 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertTrue(account11.has_connected)
|
self.assertTrue(account11.has_connected)
|
||||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||||
self.assertEquals(len(result), 2)
|
self.assertEquals(len(result), 2)
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
self.assertEquals(result[0][0], \
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
|
||||||
self.assertEquals(result[0].stanza_type, "message")
|
|
||||||
self.assertEquals(result[0].get_subject(), \
|
|
||||||
account11.default_lang_class.new_mail_subject \
|
account11.default_lang_class.new_mail_subject \
|
||||||
% ("from1@test.com"))
|
% ("from1@test.com"))
|
||||||
self.assertEquals(result[0].get_body(), "body1")
|
self.assertEquals(result[0][1], "body1")
|
||||||
self.assertEquals(result[1].get_from(), "account11@jmc.test.com")
|
self.assertEquals(result[1][0], \
|
||||||
self.assertEquals(result[1].get_to(), "test1@test.com")
|
|
||||||
self.assertEquals(result[1].stanza_type, "message")
|
|
||||||
self.assertEquals(result[1].get_subject(), \
|
|
||||||
account11.default_lang_class.new_mail_subject \
|
account11.default_lang_class.new_mail_subject \
|
||||||
% ("from2@test.com"))
|
% ("from2@test.com"))
|
||||||
self.assertEquals(result[1].get_body(), "body2")
|
self.assertEquals(result[1][1], "body2")
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
def test_feed_digest_no_mail(self):
|
def test_feed_digest_no_mail(self):
|
||||||
@@ -391,13 +391,10 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertTrue(account11.has_connected)
|
self.assertTrue(account11.has_connected)
|
||||||
self.assertEquals(len(self.comp.stream.sent), 0)
|
self.assertEquals(len(self.comp.stream.sent), 0)
|
||||||
self.assertEquals(len(result), 1)
|
self.assertEquals(len(result), 1)
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
self.assertEquals(result[0][0], \
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
|
||||||
self.assertEquals(result[0].stanza_type, "message")
|
|
||||||
self.assertEquals(result[0].get_subject(), \
|
|
||||||
account11.default_lang_class.new_digest_subject \
|
account11.default_lang_class.new_digest_subject \
|
||||||
% (2))
|
% (2))
|
||||||
self.assertEquals(result[0].get_body(), \
|
self.assertEquals(result[0][1], \
|
||||||
"body1\n----------------------------------\nbody2\n----------------------------------\n")
|
"body1\n----------------------------------\nbody2\n----------------------------------\n")
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
@@ -414,9 +411,8 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
account11.live_email_only = True
|
account11.live_email_only = True
|
||||||
account11.password = "password"
|
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(continue_checking, True)
|
||||||
self.assertEquals(result, [])
|
|
||||||
self.assertFalse(account11.first_check)
|
self.assertFalse(account11.first_check)
|
||||||
self.assertFalse(account11.waiting_password_reply)
|
self.assertFalse(account11.waiting_password_reply)
|
||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
@@ -438,11 +434,12 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
account11.live_email_only = True
|
account11.live_email_only = True
|
||||||
account11.password = "password"
|
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(continue_checking, False)
|
||||||
self.assertEquals(len(result), 1)
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
self.assertEquals(len(sent), 1)
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.first_check)
|
||||||
self.assertFalse(account11.waiting_password_reply)
|
self.assertFalse(account11.waiting_password_reply)
|
||||||
self.assertTrue(account11.in_error)
|
self.assertTrue(account11.in_error)
|
||||||
@@ -464,11 +461,12 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
account11.live_email_only = True
|
account11.live_email_only = True
|
||||||
account11.password = "password"
|
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(continue_checking, False)
|
||||||
self.assertEquals(len(result), 1)
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
self.assertEquals(len(sent), 1)
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.first_check)
|
||||||
self.assertFalse(account11.waiting_password_reply)
|
self.assertFalse(account11.waiting_password_reply)
|
||||||
self.assertTrue(account11.in_error)
|
self.assertTrue(account11.in_error)
|
||||||
@@ -490,10 +488,12 @@ class MailComponent_TestCase(unittest.TestCase):
|
|||||||
self.assertFalse(account11.in_error)
|
self.assertFalse(account11.in_error)
|
||||||
account11.live_email_only = True
|
account11.live_email_only = True
|
||||||
account11.password = "password"
|
account11.password = "password"
|
||||||
(continue_checking, result) = self.comp.feeder.initialize_live_email(account11)
|
continue_checking = self.comp.feeder.initialize_live_email(account11)
|
||||||
self.assertEquals(len(result), 1)
|
self.assertFalse(continue_checking)
|
||||||
self.assertEquals(result[0].get_to(), "test1@test.com")
|
sent = self.comp.stream.sent
|
||||||
self.assertEquals(result[0].get_from(), "account11@jmc.test.com")
|
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.assertEquals(continue_checking, False)
|
||||||
self.assertTrue(account11.first_check)
|
self.assertTrue(account11.first_check)
|
||||||
self.assertFalse(account11.waiting_password_reply)
|
self.assertFalse(account11.waiting_password_reply)
|
||||||
|
|||||||
Reference in New Issue
Block a user