コード例 #1
0
ファイル: chatroom.py プロジェクト: haabaato/pyamf_chatroom
def to_dict(model):
    """
    Converts datastore model into a JSON-serializable dictionary.
    """
    output = {}

    for key, prop in model.properties().iteritems():
        value = getattr(model, key)

        if value is None or isinstance(value, SIMPLE_TYPES):
            output[key] = value
        elif isinstance(value, datetime.datetime):
            output[key] = value
        elif isinstance(value, datetime.date):
            # Convert date/datetime to ms-since-epoch ("new Date()").
            ms = time.mktime(value.utctimetuple()) * 1000
            ms += getattr(value, 'microseconds', 0) / 1000
            output[key] = int(ms)
        elif isinstance(value, db.Model):
            output[key] = to_dict(value)
        elif isinstance(value, users.User):
            output[key] = utils.getNickname(value)
        elif isinstance(value, db.IM):
            output[key] = ''
        else:
            raise ValueError('cannot encode ' + repr(prop))

    return output
コード例 #2
0
ファイル: chatroom.py プロジェクト: haabaato/pyamf_chatroom
def updateUserPrefs(prefs):
    logging.debug("<-------------- updateUserPrefs --------------->")

    currentUser = users.get_current_user()
    userPrefs = UserPrefs.all().filter("user = "******"datastore maintenance")
            return MAINTENANCE_MSG

    # Create a new message
    if prefs.nickname:
        msg = NICK_MSG % (getNickname(), prefs.nickname)
        chat = ChatMsg.createMsg(msg, "chat.getUsers", isAnon=True)
        sendToXmpp(chat) 
        # Update memcache
        memcache.replace(currentUser.email(), prefs.nickname, 60*60*24)
        userPrefs.nickname = prefs.nickname

    # Add the user preferences dynamically
    objEntity = Get(userPrefs.key())
    for k, v in prefs.iteritems():
        objEntity[k] = v
    Put(objEntity)
コード例 #3
0
ファイル: chatroom.py プロジェクト: haabaato/pyamf_chatroom
def setTopic(userName, message):
    callback = "updateTopic"
    # Remove the callbacks from the old topics
    results = ChatMsg.all().filter("callback = ", callback).fetch(1000)
    for chat in results:
        chat.callback = None 
        chat.put()
    msg = '%s has changed the topic to: "%s"' % (getNickname(), message)
    chat = ChatMsg.createMsg(msg, callback, isAnon=True)
    sendToXmpp(chat)
コード例 #4
0
ファイル: rpc.py プロジェクト: haabaato/pyamf_chatroom
    def sendMsg(self, *args):
        if args[0] == "logout":
            # Remove user from list of current users
            result = CurrentUsers.delUser()
            # Show logout msg if user was deleted 
            if result:
                localtime = datetime.datetime.now() + timedelta(hours=UTC_OFFSET)
                msg = LOGOUT_MSG % (getNickname(), localtime.strftime("%H:%M, %a %b, %d, %Y"))
                # Create logout message
                ChatMsg.createMsg(msg, "chat.getUsers", isAnon=True)

        else:
            return args[0]
        return
コード例 #5
0
ファイル: main.py プロジェクト: haabaato/pyamf_chatroom
    def get(self):
        logging.debug("<--------------- MainPage get -------------->")
        user = users.get_current_user()

        if user is None:
            self.redirect(users.create_login_url(self.request.uri))
        else:
            self.response.headers['Content-Type'] = 'text/html'

            # Add to list of users
            result = CurrentUsers.addUser()
            # If user isn't one of the current users, show login msg
            if result:
                currentUser = users.get_current_user()
                localtime = datetime.datetime.now() + timedelta(hours=UTC_OFFSET)

                msg = getNickname() + " logged in at " + localtime.strftime("%H:%M on %a, %b %d %Y") + ". Irasshaimase biatch!"
                # Create new login message
                chatMsg = ChatMsg.createMsg(msg, "chat.getUsers", isAnon=True)

                # Log the user's IP address
                prefs = UserPrefs.all().filter("user = "******"datastore maintenance")
                return MAINTENANCE_MSG


            template_values = {
                }

            path = os.path.join(os.path.dirname(__file__), 'chat.html')
            self.response.out.write(template.render(path, template_values))
コード例 #6
0
ファイル: chatroom.py プロジェクト: haabaato/pyamf_chatroom
def emote(userName, message):
    message = "<i>" + getNickname() + " " + message + "</i>"   
    ChatMsg.createMsg(message)