def _unfollow(self, event, username, session=None): user = get_user_by_jid(event['from'].jid, session) contact = get_user_by_username(username, session) if not contact: body = 'User @%s not found.' % username self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return for idx, u in enumerate(user.contacts): if u.username == contact.username: user.contacts.pop(idx) session.commit() self.xmpp.sendMessage(user.jid, 'You don\'t follow @%s anymore.' % username, mfrom=self.jid, mtype='chat') self.xmpp.sendMessage(contact.jid, 'You lost one of your followers: @%s.' % user.username, mfrom=self.jid, mtype='chat') return self.xmpp.sendMessage(user.jid, 'You don\'t folow @%s.' % username, mfrom=self.jid, mtype='chat')
def _unfollow(self, event, username, session=None): user = get_user_by_jid(event['from'].jid, session) contact = get_user_by_username(username, session) if not contact: body = 'User @%s not found.' % username self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return for idx, u in enumerate(user.contacts): if u.username == contact.username: user.contacts.pop(idx) session.commit() self.xmpp.sendMessage( user.jid, 'You don\'t follow @%s anymore.' % username, mfrom = self.jid, mtype = 'chat' ) self.xmpp.sendMessage( contact.jid, 'You lost one of your followers: @%s.' % user.username, mfrom = self.jid, mtype = 'chat' ) return self.xmpp.sendMessage( user.jid, 'You don\'t folow @%s.' % username, mfrom = self.jid, mtype = 'chat' )
def get(self, username): user = get_user_by_username(username, self._session) self.render( 'user.html', user=user, vcard=user.vcard, mypage=user == self.current_user, )
def get(self, username): user = get_user_by_username(username, self._session) self.render( 'user.html', user = user, vcard = user.vcard, mypage = user == self.current_user, )
def get(self, username): user = get_user_by_username(username, self._session) vc = user.vcard if vc is None or vc.PHOTO is None: raise tornado.web.HTTPError(404) else: message = base64.standard_b64decode(vc.PHOTO.BINVAL.text) self.set_header('Content-Type', vc.PHOTO.TYPE or 'image/jpeg') self.write(message)
def _reply_message(self, event, username, message, session=None): user = get_user_by_username(username, session) from_ = get_user_by_jid(event['from'].jid, session) if user: body = 'Reply from @%s: %s' % (from_.username, message) self.send_message(user.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload) else: body = 'User @%s not found.' % username self.send_message(from_.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload)
def handle_new_message(self, event, session): text = event['body'] from_user = get_user_by_jid(event['from'].jid, session) text_len = len(text) if self.max_tweet_length and text_len > self.max_tweet_length: self.send_message( from_user.jid, 'Your message is longer than %s characters (%s chars). ' 'Your message has not been posted.' % (self.max_tweet_length, text_len), mfrom=self.jid, mtype='chat') return try: tweet = Tweet( username=from_user.username, text=text, ) session.add(tweet) except Exception: self.log.exception('can\'t save tweet') body = '@%s: %s' % (from_user.username, text) for subscriber in from_user.subscribers: self.send_message(subscriber.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload) body = 'Mention by @%s: %s' % (from_user.username, text) for username in re.findall(r'\W@\w+', text): try: user = get_user_by_username(username[1:], session) except UserNotFound: continue if user not in from_user.subscribers: self.send_message(user.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload) search.process_message(event)
def post(self): username = self.get_argument('username') password = self.get_argument('password') next = self.get_argument('next', '/') errors = defaultdict(unicode) try: user = get_user_by_username(username, self._session) except UserNotFound: errors['username'] = '******' else: if user.password == password: self.set_secure_cookie('session', username) self.redirect(next) return else: errors['password'] = '******' self.render('login.html', next=next, errors=errors)
def _process_event(event, session=None): log.debug('Processing word "%s"' % event['body']) text = event['body'] from_user = get_user_by_jid(event['from'].jid, session) body = 'Search: @%s says "%s"' % (from_user.username, text) num_recipients = 0 text = text.lower() receivers = set() terms = {} # user to terms hash def all_in_text(words, text): return all(map(lambda word: word in text, words)) for words, users in _searches.items(): if all_in_text(words, text): receivers.update(users) for user in users: terms[user] = words for username in receivers: user = get_user_by_username(username, session) if user not in from_user.subscribers and \ user != from_user: payload = copy.deepcopy(event.payload) for term in terms[username]: payload.add_node('searchTerm', term) num_recipients += 1 bot.send_message(user.jid, body, mfrom=bot.jid, mtype='chat', payload=payload) log.debug('This message was received by %s recipients.' % num_recipients)
def _follow(self, event, username, session=None): user = get_user_by_jid(event['from'].jid, session) contact = get_user_by_username(username, session) if not contact: body = 'User @%s not found.' % username self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return if user == contact: body = 'You can\'t follow youself.' self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return if contact in user.contacts: self.xmpp.sendMessage(user.jid, 'You already follow @%s.' % username, mfrom=self.jid, mtype='chat') return user.contacts.append(contact) session.commit() self.xmpp.sendMessage(user.jid, 'Now you are following @%s.' % username, mfrom=self.jid, mtype='chat') self.xmpp.sendMessage(contact.jid, 'You have a new follower: @%s.' % user.username, mfrom=self.jid, mtype='chat')
def handle_new_message(self, event, session): text = event['body'] from_user = get_user_by_jid(event['from'].jid, session) text_len = len(text) if self.max_tweet_length and text_len > self.max_tweet_length: self.send_message( from_user.jid, 'Your message is longer than %s characters (%s chars). ' 'Your message has not been posted.' % (self.max_tweet_length, text_len), mfrom = self.jid, mtype = 'chat' ) return try: tweet = Tweet( username = from_user.username, text = text, ) session.add(tweet) except Exception: self.log.exception('can\'t save tweet') body = '@%s: %s' % (from_user.username, text) for subscriber in from_user.subscribers: self.send_message(subscriber.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload) body = 'Mention by @%s: %s' % (from_user.username, text) for username in re.findall(r'\W@\w+', text): try: user = get_user_by_username(username[1:], session) except UserNotFound: continue if user not in from_user.subscribers: self.send_message(user.jid, body, mfrom=self.jid, mtype='chat', payload=event.payload) search.process_message(event)
def _follow(self, event, username, session=None): user = get_user_by_jid(event['from'].jid, session) contact = get_user_by_username(username, session) if not contact: body = 'User @%s not found.' % username self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return if user == contact: body = 'You can\'t follow youself.' self.xmpp.sendMessage(event['from'].jid, body, mfrom=self.jid, mtype='chat') return if contact in user.contacts: self.xmpp.sendMessage( user.jid, 'You already follow @%s.' % username, mfrom = self.jid, mtype = 'chat' ) return user.contacts.append(contact) session.commit() self.xmpp.sendMessage( user.jid, 'Now you are following @%s.' % username, mfrom = self.jid, mtype = 'chat' ) self.xmpp.sendMessage( contact.jid, 'You have a new follower: @%s.' % user.username, mfrom = self.jid, mtype = 'chat' )
def get(self, username): user = get_user_by_username(username, self._session) next = self.get_argument('next', '/') self.render('unfollow.html', user=user, next=next)
def post(self, username): if self.get_argument('choice') == 'YES': user = get_user_by_username(username, self._session) user.subscribers.append(self.current_user) next = self.get_argument('next', '/') self.redirect(next)
def get_current_user(self): username = self.get_secure_cookie('session') if username: return get_user_by_username(username, self._session) return None
def get(self, username): user = get_user_by_username(username, self._session) next = self.get_argument('next', '/') self.render('follow.html', user=user, next=next)