Esempio n. 1
0
File: chat.py Progetto: PEZ/MooTalk
 def clean_chat_from_non_users(self):
     import logging
     for email in self.participants:
         try: 
             User.all().filter('address =', email).fetch(1)[0]
         except IndexError:
             logging.error("Cleaning away non user %s from chat %s" % (email, self.title))
             self.remove_participant(email)
Esempio n. 2
0
 def setUp(self):
     super(TestChatListeners, self).setUp()
     self.user1 = User.create(u'u1', u'u1@foo')
     self.user2 = User.create(u'u2', u'u2@foo')
     self.user3 = User.create(u'u3', u'u3@foo')
     self.chat = Chat.create(title=u'chat 1')
     self.chat.add_participant(self.user1.address)
     self.chat.add_participant(self.user2.address)
     self.chat.add_participant(self.user3.address)
Esempio n. 3
0
 def test_user_from_any_address(self):
     '''Retrieve a user using any registered address, email or primary'''
     self.assertEqual(
         User.user_from_any_address(self.user.address).key(),
         self.user.key())
     self.assertEqual(
         User.user_from_any_address(self.address1).key(), self.user.key())
     self.assertEqual(
         User.user_from_any_address(self.address2).key(), self.user.key())
Esempio n. 4
0
 def setUp(self):
     super(TestChatListeners, self).setUp()
     self.user1 = User.create(u'u1', u'u1@foo')
     self.user2 = User.create(u'u2', u'u2@foo')
     self.user3 = User.create(u'u3', u'u3@foo')
     self.chat = Chat.create(title=u'chat 1')
     self.chat.add_participant(self.user1.address)
     self.chat.add_participant(self.user2.address)
     self.chat.add_participant(self.user3.address)
Esempio n. 5
0
File: chat.py Progetto: PEZ/MooTalk
 def clean_chat_from_non_users(self):
     import logging
     for email in self.participants:
         try:
             User.all().filter('address =', email).fetch(1)[0]
         except IndexError:
             logging.error("Cleaning away non user %s from chat %s" %
                           (email, self.title))
             self.remove_participant(email)
Esempio n. 6
0
 def post(self):
     delete_key = self.request.get('key').strip()
     nick = self.request.get('nick').strip()
     address = self.request.get('address').strip()
     
     if delete_key != '':
         User.murder(delete_key)
     elif address:
         User.create(nick, address)
     
     self.get()
Esempio n. 7
0
 def pm_command(self, message=None):
     if self.set_chat_and_user(message):
         arg = message.arg.strip()
         space = arg.find(' ')
         to = arg[:space]
         msg = arg[space+1:]
         user = User.user(to)
         if user == None:
             user = User.user_from_nick(to)
         if user != None:
             xmpp.send_message(user.address, messages.PRIVATE_MESSAGE % (self.sender.nickname, msg), message.to)
         else:
             logging.info("Failed PM from '%s' to '%s' in channel '%s'." % (self.sender.nickname, to, self.chat))
             message.reply(messages.SYSTEM_MESSAGE % "No such user")
Esempio n. 8
0
 def who_command(self, message=None):
     if self.set_chat_and_user(message):
         arg = message.arg.strip()
         if arg in ["", "am i", "online"]:
             if arg == "am i":
                 message.reply(messages.SYSTEM_MESSAGE %
                               ("You are " + user_listing([self.sender])))
             else:
                 who = "\nOnline:\n"
                 listeners = [
                     u for u in self.chat.listeners
                     if xmpp.get_presence(u.address, message.to)
                 ]
                 who += user_listing(listeners)
                 if arg != "online":
                     offlines = [
                         u for u in self.chat.users
                         if not xmpp.get_presence(u.address, message.to)
                     ]
                     who += "\n\nOffline:\n"
                     who += user_listing(offlines)
                 who += "\n\nOnline, but has muted this chat:\n"
                 non_listeners = [
                     User.user(address)
                     for address in self.chat.non_listeners
                     if xmpp.get_presence(address, message.to)
                 ]
                 who += user_listing(non_listeners)
                 message.reply(messages.SYSTEM_MESSAGE % who)
         else:
             message.reply(messages.HELP_MSG)
Esempio n. 9
0
File: chat.py Progetto: PEZ/MooTalk
 def add_participant(self, address):
     """
     Adds a user to a chat and also sends an invitation to the user to authorize the channel.
     """
     if address in [u.address for u in User.all()]:
         db.run_in_transaction(self._add_participantTx, address)
         xmpp.send_invite(address, self.jid)
Esempio n. 10
0
 def get(self, key):
     user = User.get(key)
     if user != None:
         template_values = {
             'user': user
         }
         self.Render("user.html", template_values)
Esempio n. 11
0
File: chat.py Progetto: PEZ/MooTalk
 def add_participant(self, address):
     """
     Adds a user to a chat and also sends an invitation to the user to authorize the channel.
     """
     if address in [u.address for u in User.all()]:
         db.run_in_transaction(self._add_participantTx, address)
         xmpp.send_invite(address, self.jid)
Esempio n. 12
0
 def get(self, _key_or_title):
     chat = self._get_chat(_key_or_title)
     if chat != None:
         chat.clean_chat_from_non_users()
         template_values = {
             'chat': chat,
             'users': User.all()
         }
         self.Render("chat.html", template_values)
Esempio n. 13
0
 def set_chat_and_user(self, message):
     sender_address = message.sender.split('/')[0].lower()
     (self.chat, self.sender) = (get_chat(message), User.user(sender_address))
     if user_in_chat(self.sender, self.chat):
         return True
     else:
         message.reply(messages.NO_ACCESS)
         logging.info("Denied access for address %s to chat %s" % (sender_address, self.chat))
         return False
Esempio n. 14
0
 def pm_command(self, message=None):
     if self.set_chat_and_user(message):
         arg = message.arg.strip()
         space = arg.find(' ')
         to = arg[:space]
         msg = arg[space + 1:]
         user = User.user(to)
         if user == None:
             user = User.user_from_nick(to)
         if user != None:
             xmpp.send_message(
                 user.address,
                 messages.PRIVATE_MESSAGE % (self.sender.nickname, msg),
                 message.to)
         else:
             logging.info("Failed PM from '%s' to '%s' in channel '%s'." %
                          (self.sender.nickname, to, self.chat))
             message.reply(messages.SYSTEM_MESSAGE % "No such user")
Esempio n. 15
0
 def set_chat_and_user(self, message):
     sender_address = message.sender.split('/')[0].lower()
     (self.chat, self.sender) = (get_chat(message),
                                 User.user(sender_address))
     if user_in_chat(self.sender, self.chat):
         return True
     else:
         message.reply(messages.NO_ACCESS)
         logging.info("Denied access for address %s to chat %s" %
                      (sender_address, self.chat))
         return False
Esempio n. 16
0
 def post(self, key):
     user = User.get(key)
     if user != None:
         action = self.request.get('action')
         if action == 'delete_user':
             user.murder(key)
         elif action == 'update_user':
             user.address = self.request.get('address').strip()
             user.nick = self.request.get('nick').strip()
             user.email_addresses = self.request.get('email_addresses')
             user.put()
         self.get(key)
Esempio n. 17
0
 def who_command(self, message=None):
     if self.set_chat_and_user(message):
         arg = message.arg.strip()
         if arg in ["", "am i", "online"]:
             if arg == "am i":
                 message.reply(messages.SYSTEM_MESSAGE % ("You are " + user_listing([self.sender])))
             else:
                 who = "\nOnline:\n"
                 listeners = [u for u in self.chat.listeners if xmpp.get_presence(u.address, message.to)]
                 who += user_listing(listeners)
                 if arg != "online":
                     offlines = [u for u in self.chat.users if not xmpp.get_presence(u.address, message.to)]
                     who += "\n\nOffline:\n"
                     who += user_listing(offlines)
                 who += "\n\nOnline, but has muted this chat:\n"
                 non_listeners = [User.user(address) for address in self.chat.non_listeners if xmpp.get_presence(address, message.to)]
                 who += user_listing(non_listeners)
                 message.reply(messages.SYSTEM_MESSAGE % who)
         else:
             message.reply(messages.HELP_MSG)
Esempio n. 18
0
 def test_default_email_addresses(self):
     '''Empty list of addresses when addresses are not assigned'''
     user = User.create('A', 'B')
     self.assertEqual([], user.email_addresses)
Esempio n. 19
0
File: chat.py Progetto: PEZ/MooTalk
 def non_users(self):
     return [
         u for u in User.all()
         if not self.title in [c.title for c in u.chats]
     ]
Esempio n. 20
0
File: chat.py Progetto: PEZ/MooTalk
 def users(self):
     return [User.user(p) for p in self.participants if User.user(p)]
Esempio n. 21
0
File: chat.py Progetto: PEZ/MooTalk
 def remove_listener(self, address):
     if address not in self.non_listeners and address in [
             u.address for u in User.all()
     ]:
         self.non_listeners.append(address)
         self.put()
Esempio n. 22
0
 def setUp(self):
     super(TestChatTaglines, self).setUp()
     self.user1 = User.create(u'u1', u'u1@foo')
     self.chat = Chat.create(title=u'chat 1')
     self.chat.add_participant(self.user1.address)
Esempio n. 23
0
def get_chat_and_user(message):
    sender_address = message.sender.split('/')[0].lower()
    return get_chat(message), User.user(sender_address)
Esempio n. 24
0
 def get(self):
     template_values = {
         'users': User.all(),
     }
     self.Render("users.html", template_values)
Esempio n. 25
0
File: chat.py Progetto: PEZ/MooTalk
 def non_users(self):         
     return [u for u in User.all() if not self.title in [c.title for c in u.chats]]
Esempio n. 26
0
File: chat.py Progetto: PEZ/MooTalk
 def remove_listener(self, address):
     if address not in self.non_listeners and address in [u.address for u in User.all()]:
         self.non_listeners.append(address)
         self.put()
Esempio n. 27
0
 def test_user_from_address(self):
     '''Get a user using the registered XMPP address'''
     self.assertEqual(self.user.key(), User.user(self.user.address).key())
Esempio n. 28
0
 def setUp(self):
     ModelTestCase.setUp(self)
     self.user = User.create('Foo', '*****@*****.**')
Esempio n. 29
0
 def test_user_from_email_address_not_found(self):
     '''Email address not there, no user for you'''
     self.assertNone(User.user_from_email_address('*****@*****.**'))
Esempio n. 30
0
 def test_user_from_nick(self):
     '''Retrieve a user using the nick name'''
     self.assertEqual(self.user.key(),
                      User.user_from_nick(self.user.nickname).key())
Esempio n. 31
0
 def setUp(self):
     super(TestChatTaglines, self).setUp()
     self.user1 = User.create(u'u1', u'u1@foo')
     self.chat = Chat.create(title=u'chat 1')
     self.chat.add_participant(self.user1.address)
Esempio n. 32
0
 def test_user_from_email_address(self):
     '''Retrieve a user from one of her e-mail addresses'''
     self.assertEqual(
         User.user_from_email_address(self.address2).key(), self.user.key())
Esempio n. 33
0
def get_chat_and_user(message):
    to_address = get_to_address(message)
    sender_address = get_sender_address(message)
    return get_chat(to_address), User.user_from_any_address(sender_address)
Esempio n. 34
0
def get_chat_and_user(message):
    sender_address = message.sender.split('/')[0].lower()
    return get_chat(message), User.user(sender_address)
Esempio n. 35
0
File: chat.py Progetto: PEZ/MooTalk
 def users(self):
     return [User.user(p) for p in self.participants if User.user(p)]