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})
def test_utils(self): """ Tests some of the utility methods not being tested elsewhere """ s = '& <>\'"' self.assertEquals(utils.escape(s), '& <>'"') 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'<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, 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)