Example #1
0
    def send_message(self, to, message, chat_type="chatbox"):
        """ Send a chat message
        """
        pm = getToolByName(self.context, "portal_membership")
        if pm.isAnonymousUser():
            return json.dumps({"status": config.AUTH_FAIL})

        server = utils.get_connection(self.context)
        if server is None:
            return json.dumps({"status": config.SERVER_ERROR})
        member = pm.getAuthenticatedMember()
        if not hasattr(member, "chatpass"):
            return json.dumps({"status": config.AUTH_FAIL})

        message = cgi.escape(message)
        message = utils.urlize(message, blank=True, auto_escape=False)
        password = getattr(member, "chatpass")
        username = member.getId()
        fullname = member.getProperty("fullname") or username
        log.debug(u"Chat message from %s sent to %s" % (username, to))
        server = utils.get_connection(self.context)
        if server is None:
            return json.dumps({"status": config.SERVER_ERROR})

        if chat_type == "chatroom":
            func = server.sendChatRoomMessage
        else:
            func = server.sendMessage
        try:
            resp = func(username, password, fullname, to, message)
        except xmlrpclib.Fault, e:
            log.warn("Error from chat.service: sendMessage: %s" % e)
            return json.dumps({"status": config.SERVER_ERROR})
Example #2
0
    def test_utils(self):
        """ Tests some of the utility methods not being tested elsewhere 
        """
        s = '& <>\'"'
        self.assertEquals(utils.escape(s), '&amp; &lt;&gt;&#39;&quot;')
        self.assertEquals(utils.reverse_escape(utils.escape(s)), s)

        s = "Here is a list of words"
        l = ["Here", " ", "is", " ", "a", " ", "list", " ", "of", " ", "words"]
        self.assertEquals(utils.get_string_words(s), l) 

        url = 'http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg'
        short_url = utils.trim_url(url, 25)
        assert(short_url[:len(short_url)-3] in url)
        self.assertEquals(short_url, url[:22]+'...')

        urlized = utils.urlize(url)
        test_url = u'<a href="http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg">http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg</a>'
        self.assertEquals(urlized, test_url)

        urlized  = utils.urlize(url, nofollow=True)
        test_url = u'<a href="http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg" rel="nofollow">http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg</a>'
        self.assertEquals(urlized, test_url)

        urlized = utils.urlize(url, blank=True)
        test_url = u'<a href="http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg" target="_blank">http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg</a>'
        self.assertEquals(urlized, test_url)

        urlized  = utils.urlize(url, auto_escape=True)
        test_url = u'&lt;a href=&quot;http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg&quot;&gt;http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg&lt;/a&gt;'
        self.assertEquals(urlized, test_url)

        urlized = utils.urlize(url, nofollow=True, blank=True)
        test_url = u'<a href="http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg" rel="nofollow" target="_blank">http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg</a>'
        self.assertEquals(urlized, test_url)
        
        urlized = utils.urlize(url, url_limit=5, nofollow=True, blank=True)
        test_url = u'<a href="http://www.someadress.com/here_is_a_very_long-addres?par=LKhase976asg" rel="nofollow" target="_blank">ht...</a>'
        self.assertEquals(urlized, test_url)