def post(self): """Handle the POST method """ path = os.path.join(os.path.dirname(__file__), 'index.html') try: username = escape(self.request.get('username')) password = escape(self.request.get('password')) logging.info("Handling request for %s" % username) t = Twitter(username, password) friends = set([f['screen_name'] for f in t.get_friends()]) followers = set([f['screen_name'] for f in t.get_followers()]) to_follow = followers.difference(friends) try: for user in to_follow: try: t.friendship_create(user, True) logging.info("%s now follows %s" % (username, user)) except DownloadError: logging.warning("Download error when %s tried to follow %s" % (username, user)) raise self.response.out.write(template.render(path, {"success": True})) except Exception, e: logging.warning("Caught an exception %s when %s tried to follow %s: %s" % (e, username, user)) raise except DeadlineExceededError: self.response.out.write(template.render(path, {"error": True}))