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
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)
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)
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
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))
def emote(userName, message): message = "<i>" + getNickname() + " " + message + "</i>" ChatMsg.createMsg(message)