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
|
import jmc
|
||||||
from jmc.runner import JMCRunner
|
from jmc.runner import JMCRunner
|
||||||
|
from jmc.lang import Lang
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
runner = JMCRunner("Jabber Mail Component", jmc.version)
|
runner = JMCRunner(Lang().get_default_lang_class().component_name,
|
||||||
|
jmc.version)
|
||||||
runner.configure()
|
runner.configure()
|
||||||
runner.run()
|
runner.run()
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ from pyxmpp.message import Message
|
|||||||
|
|
||||||
from jcl.model.account import Account, PresenceAccount, LegacyJID
|
from jcl.model.account import Account, PresenceAccount, LegacyJID
|
||||||
from jcl.jabber.component import Handler, DefaultSubscribeHandler, \
|
from jcl.jabber.component import Handler, DefaultSubscribeHandler, \
|
||||||
DefaultUnsubscribeHandler, DefaultPresenceHandler
|
DefaultUnsubscribeHandler, DefaultPresenceHandler, AccountManager
|
||||||
from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \
|
from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \
|
||||||
HeadlineSender, FeederHandler
|
HeadlineSender, FeederHandler
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ class MailComponent(FeederComponent):
|
|||||||
server,
|
server,
|
||||||
port,
|
port,
|
||||||
db_connection_str,
|
db_connection_str,
|
||||||
lang = Lang()):
|
lang=Lang()):
|
||||||
"""Use FeederComponent behavior and setup feeder and sender
|
"""Use FeederComponent behavior and setup feeder and sender
|
||||||
attributes.
|
attributes.
|
||||||
"""
|
"""
|
||||||
@@ -64,6 +64,7 @@ class MailComponent(FeederComponent):
|
|||||||
db_connection_str,
|
db_connection_str,
|
||||||
lang=lang)
|
lang=lang)
|
||||||
self.handler = MailFeederHandler(MailFeeder(self), MailSender(self))
|
self.handler = MailFeederHandler(MailFeeder(self), MailSender(self))
|
||||||
|
self.account_manager = MailAccountManager(self)
|
||||||
self.account_manager.account_classes = (IMAPAccount,
|
self.account_manager.account_classes = (IMAPAccount,
|
||||||
POP3Account,
|
POP3Account,
|
||||||
SMTPAccount)
|
SMTPAccount)
|
||||||
@@ -74,6 +75,16 @@ class MailComponent(FeederComponent):
|
|||||||
self.available_handlers += [MailPresenceHandler()]
|
self.available_handlers += [MailPresenceHandler()]
|
||||||
self.unavailable_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):
|
class MailFeeder(Feeder):
|
||||||
"""Email check"""
|
"""Email check"""
|
||||||
|
|
||||||
@@ -252,7 +263,7 @@ class SendMailMessageHandler(MailHandler):
|
|||||||
|
|
||||||
class RootSendMailMessageHandler(SendMailMessageHandler):
|
class RootSendMailMessageHandler(SendMailMessageHandler):
|
||||||
"""Handle message sent to root JID"""
|
"""Handle message sent to root JID"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
SendMailMessageHandler.__init__(self)
|
SendMailMessageHandler.__init__(self)
|
||||||
self.to_regexp = re.compile("^\s*(to|TO|To)\s*:\s*(?P<to_email>.*)")
|
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, \
|
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
|
||||||
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
|
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
|
||||||
MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
|
MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
|
||||||
MailPresenceHandler
|
MailPresenceHandler, MailAccountManager
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
|
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
@@ -549,6 +549,15 @@ class SendMailMessageHandler_TestCase(unittest.TestCase):
|
|||||||
self.assertEquals(result[0].get_body(),
|
self.assertEquals(result[0].get_body(),
|
||||||
Lang.en.send_mail_ok_body % ("user@test.com"))
|
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):
|
class RootSendMailMessageHandler_TestCase(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.handler = RootSendMailMessageHandler()
|
self.handler = RootSendMailMessageHandler()
|
||||||
@@ -916,6 +925,7 @@ def suite():
|
|||||||
suite = unittest.TestSuite()
|
suite = unittest.TestSuite()
|
||||||
suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(SendMailMessageHandler_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(RootSendMailMessageHandler_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test'))
|
||||||
|
|||||||
@@ -62,5 +62,7 @@ class JMCRunner(JCLRunner):
|
|||||||
lang = Lang(self.language))
|
lang = Lang(self.language))
|
||||||
MailAccount.default_encoding = self.mail_default_encoding
|
MailAccount.default_encoding = self.mail_default_encoding
|
||||||
component.check_interval = self.check_interval
|
component.check_interval = self.check_interval
|
||||||
|
component.disco_identity.set_category("gateway")
|
||||||
|
component.disco_identity.set_type("smtp")
|
||||||
component.run()
|
component.run()
|
||||||
self._run(run_func)
|
self._run(run_func)
|
||||||
|
|||||||
Reference in New Issue
Block a user