Changeset 94

Show
Ignore:
Timestamp:
06/18/07 20:46:42 (2 years ago)
Author:
David Rousselie <dax@happycoders.org>
Message:

Add multiple identities to JMC

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/jmc.py

    r74 r94  
    2828import jmc 
    2929from jmc.runner import JMCRunner 
     30from jmc.lang import Lang 
    3031 
    3132if __name__ == "__main__": 
    32     runner = JMCRunner("Jabber Mail Component", jmc.version) 
     33    runner = JMCRunner(Lang().get_default_lang_class().component_name, 
     34                       jmc.version) 
    3335    runner.configure() 
    3436    runner.run() 
  • src/jmc/jabber/component.py

    r93 r94  
    3232from jcl.model.account import Account, PresenceAccount, LegacyJID 
    3333from jcl.jabber.component import Handler, DefaultSubscribeHandler, \ 
    34     DefaultUnsubscribeHandler, DefaultPresenceHandler 
     34    DefaultUnsubscribeHandler, DefaultPresenceHandler, AccountManager 
    3535from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \ 
    3636    HeadlineSender, FeederHandler 
     
    5353                 port, 
    5454                 db_connection_str, 
    55                  lang = Lang()): 
     55                 lang=Lang()): 
    5656        """Use FeederComponent behavior and setup feeder and sender 
    5757        attributes. 
     
    6565                                 lang=lang) 
    6666        self.handler = MailFeederHandler(MailFeeder(self), MailSender(self)) 
     67        self.account_manager = MailAccountManager(self) 
    6768        self.account_manager.account_classes = (IMAPAccount, 
    6869                                                POP3Account, 
     
    7475        self.available_handlers += [MailPresenceHandler()] 
    7576        self.unavailable_handlers += [MailPresenceHandler()] 
     77 
     78class MailAccountManager(AccountManager): 
     79    """JMC specific account behavior""" 
     80 
     81    def root_disco_get_info(self, name, category, type): 
     82        """Add jabber:iq:gateway support""" 
     83        disco_info = AccountManager.root_disco_get_info(self, name, category, type) 
     84        disco_info.add_feature("jabber:iq:gateway") 
     85        disco_info.add_identity(name, "headline", "newmail") 
     86        return disco_info 
    7687 
    7788class MailFeeder(Feeder): 
     
    253264class RootSendMailMessageHandler(SendMailMessageHandler): 
    254265    """Handle message sent to root JID""" 
    255      
     266 
    256267    def __init__(self): 
    257268        SendMailMessageHandler.__init__(self) 
  • src/jmc/jabber/tests/component.py

    r93 r94  
    4343    RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \ 
    4444    MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \ 
    45     MailPresenceHandler 
     45    MailPresenceHandler, MailAccountManager 
    4646from jmc.lang import Lang 
    4747 
     
    549549        self.assertEquals(result[0].get_body(), 
    550550                          Lang.en.send_mail_ok_body % ("user@test.com")) 
     551 
     552class MailAccountManager_TestCase(unittest.TestCase): 
     553    def test_root_disco_get_info(self): 
     554        mam = MailAccountManager(None) 
     555        disco_info = mam.root_disco_get_info("JMC", "gateway", "smtp") 
     556        self.assertTrue(disco_info.has_feature("jabber:iq:gateway")) 
     557        self.assertEquals(len(disco_info.get_identities()), 2) 
     558        self.assertTrue(disco_info.identity_is("gateway", "smtp")) 
     559        self.assertTrue(disco_info.identity_is("headline", "newmail")) 
    551560 
    552561class RootSendMailMessageHandler_TestCase(unittest.TestCase): 
     
    917926    suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test')) 
    918927    suite.addTest(unittest.makeSuite(SendMailMessageHandler_TestCase, 'test')) 
     928    suite.addTest(unittest.makeSuite(MailAccountManager_TestCase, 'test')) 
    919929    suite.addTest(unittest.makeSuite(RootSendMailMessageHandler_TestCase, 'test')) 
    920930    suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test')) 
  • src/jmc/runner.py

    r90 r94  
    6363            MailAccount.default_encoding = self.mail_default_encoding 
    6464            component.check_interval = self.check_interval 
     65            component.disco_identity.set_category("gateway") 
     66            component.disco_identity.set_type("smtp") 
    6567            component.run() 
    6668        self._run(run_func)