def test_format_tweet(self): event = Mock () event.get_number_of_days = mock.Mock(return_value=0) now_utc = timezone.now() event.date_time_begin = now_utc event.get_absolute_url = mock.Mock(return_value='/events/java-event-1') event.title = 'Testevent' tweet = twitter.format_tweet(event, '') now_local = timezone.localtime(now_utc) now_local_str = now_local.strftime("%d.%m.%Y %H:%M") self.assertEqual(tweet, u'Testevent - ' + now_local_str + ' ' + settings.HTTP_URL + '/events/java-event-1')
def twitter_context(arg): import json import urllib from util import rfc3339 import datetime import twitter from twitter import format_tweet if "arg" not in arg["qs"] and arg["oauth"] == False: err(noarg) _default(arg, "oauth", False) _default(arg, "token_name", None) _default(arg, "infinite_retries", True) _default(arg, "source_filter", False) p = twitter.Twitter(db=arg["cursor"], oauth=arg["oauth"], token_name=arg["token_name"], infinite_retries=arg["infinite_retries"]) if "mentions" in arg and arg["mentions"] == True: tweets = p.mentions() uname = p.me().screen_name else: uname = arg["qs"]["arg"] tweets = p.user_timeline(uname) tweet_cache = {} for tweet in tweets: tweet_cache[tweet.id] = tweet rval = {"id": "http://twitter.com/%s#atom_maker_context_feed" % uname, "link": "http://twitter.com/%s" % uname, "title": "Twitter / %s / context" % uname, "author": tweets[0].user.name, "entries": []} if 'lang' in arg["qs"]: rval["lang"] = arg["qs"]['lang'] parent_skip_list = set() for tweet in tweets: if tweet.id in parent_skip_list: continue if arg["source_filter"] and tweet.source in arg["source_filter"]: continue content = [] tweet_url = "http://twitter.com/%s/status/%s" % (tweet.user.screen_name, tweet.id_str) entry = {"id": tweet_url, "title": "%s: " % tweet.user.screen_name + tweet.text, "content_type": "html", "updated": rfc3339(tweet.created_at), "link": tweet_url} content.append(format_tweet(tweet.user.screen_name, tweet.user.name, tweet.text, tweet_url, tweet.created_at)) parent_id = tweet.in_reply_to_status_id while parent_id: if parent_id in tweet_cache: parent_tweet = tweet_cache[parent_id] else: try: parent_tweet = p.get_tweet(parent_id) except: break tweet_cache[parent_id] = parent_tweet # don't make a new RSS entry for tweets in a conversation chain if parent_tweet.user.id == tweet.user.id: parent_skip_list.add(parent_tweet.id) content.append(format_tweet(parent_tweet.user.screen_name, parent_tweet.user.name, parent_tweet.text, "http://twitter.com/%s/status/%s" % (parent_tweet.user.screen_name, parent_id), parent_tweet.created_at)) # continue to next parent or terminate parent_id = parent_tweet.in_reply_to_status_id entry["content"] = "".join(reversed(content)) rval["entries"].append(entry) rval["updated"] = rval["entries"][0]["updated"] # first tweet is newest return rval