Add multiple identities to JMC
darcs-hash:20070618194642-86b55-e4f3b144c11cf89a0ff7f10101a2d23969c72089.gz
This commit is contained in:
@@ -27,8 +27,10 @@ del sys.setdefaultencoding
|
||||
|
||||
import jmc
|
||||
from jmc.runner import JMCRunner
|
||||
from jmc.lang import Lang
|
||||
|
||||
if __name__ == "__main__":
|
||||
runner = JMCRunner("Jabber Mail Component", jmc.version)
|
||||
runner = JMCRunner(Lang().get_default_lang_class().component_name,
|
||||
jmc.version)
|
||||
runner.configure()
|
||||
runner.run()
|
||||
|
||||
@@ -31,7 +31,7 @@ from pyxmpp.message import Message
|
||||
|
||||
from jcl.model.account import Account, PresenceAccount, LegacyJID
|
||||
from jcl.jabber.component import Handler, DefaultSubscribeHandler, \
|
||||
DefaultUnsubscribeHandler, DefaultPresenceHandler
|
||||
DefaultUnsubscribeHandler, DefaultPresenceHandler, AccountManager
|
||||
from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \
|
||||
HeadlineSender, FeederHandler
|
||||
|
||||
@@ -52,7 +52,7 @@ class MailComponent(FeederComponent):
|
||||
server,
|
||||
port,
|
||||
db_connection_str,
|
||||
lang = Lang()):
|
||||
lang=Lang()):
|
||||
"""Use FeederComponent behavior and setup feeder and sender
|
||||
attributes.
|
||||
"""
|
||||
@@ -64,6 +64,7 @@ class MailComponent(FeederComponent):
|
||||
db_connection_str,
|
||||
lang=lang)
|
||||
self.handler = MailFeederHandler(MailFeeder(self), MailSender(self))
|
||||
self.account_manager = MailAccountManager(self)
|
||||
self.account_manager.account_classes = (IMAPAccount,
|
||||
POP3Account,
|
||||
SMTPAccount)
|
||||
@@ -74,6 +75,16 @@ class MailComponent(FeederComponent):
|
||||
self.available_handlers += [MailPresenceHandler()]
|
||||
self.unavailable_handlers += [MailPresenceHandler()]
|
||||
|
||||
class MailAccountManager(AccountManager):
|
||||
"""JMC specific account behavior"""
|
||||
|
||||
def root_disco_get_info(self, name, category, type):
|
||||
"""Add jabber:iq:gateway support"""
|
||||
disco_info = AccountManager.root_disco_get_info(self, name, category, type)
|
||||
disco_info.add_feature("jabber:iq:gateway")
|
||||
disco_info.add_identity(name, "headline", "newmail")
|
||||
return disco_info
|
||||
|
||||
class MailFeeder(Feeder):
|
||||
"""Email check"""
|
||||
|
||||
@@ -252,7 +263,7 @@ class SendMailMessageHandler(MailHandler):
|
||||
|
||||
class RootSendMailMessageHandler(SendMailMessageHandler):
|
||||
"""Handle message sent to root JID"""
|
||||
|
||||
|
||||
def __init__(self):
|
||||
SendMailMessageHandler.__init__(self)
|
||||
self.to_regexp = re.compile("^\s*(to|TO|To)\s*:\s*(?P<to_email>.*)")
|
||||
|
||||
@@ -42,7 +42,7 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
|
||||
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
|
||||
MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
|
||||
MailPresenceHandler
|
||||
MailPresenceHandler, MailAccountManager
|
||||
from jmc.lang import Lang
|
||||
|
||||
if sys.platform == "win32":
|
||||
@@ -549,6 +549,15 @@ class SendMailMessageHandler_TestCase(unittest.TestCase):
|
||||
self.assertEquals(result[0].get_body(),
|
||||
Lang.en.send_mail_ok_body % ("user@test.com"))
|
||||
|
||||
class MailAccountManager_TestCase(unittest.TestCase):
|
||||
def test_root_disco_get_info(self):
|
||||
mam = MailAccountManager(None)
|
||||
disco_info = mam.root_disco_get_info("JMC", "gateway", "smtp")
|
||||
self.assertTrue(disco_info.has_feature("jabber:iq:gateway"))
|
||||
self.assertEquals(len(disco_info.get_identities()), 2)
|
||||
self.assertTrue(disco_info.identity_is("gateway", "smtp"))
|
||||
self.assertTrue(disco_info.identity_is("headline", "newmail"))
|
||||
|
||||
class RootSendMailMessageHandler_TestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.handler = RootSendMailMessageHandler()
|
||||
@@ -916,6 +925,7 @@ def suite():
|
||||
suite = unittest.TestSuite()
|
||||
suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(SendMailMessageHandler_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(MailAccountManager_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(RootSendMailMessageHandler_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test'))
|
||||
|
||||
@@ -62,5 +62,7 @@ class JMCRunner(JCLRunner):
|
||||
lang = Lang(self.language))
|
||||
MailAccount.default_encoding = self.mail_default_encoding
|
||||
component.check_interval = self.check_interval
|
||||
component.disco_identity.set_category("gateway")
|
||||
component.disco_identity.set_type("smtp")
|
||||
component.run()
|
||||
self._run(run_func)
|
||||
|
||||
Reference in New Issue
Block a user