def post(self): msg = xmpp.Message(self.request.POST) logging.debug(self.request.body + "$" + str(msg)) commands = ['status','help','update','home','shorten','remind','verify'] msgSplit = msg.body.split(' ') self.user = GrafiteUser.getUser(username=self._getUserName(msg.sender)) if self.user is None and msgSplit[0].lower() != "verify": msg.reply(STR_HELLO + "\n" + STR_PROMPT_REGISTER) return logging.debug("*CHAT*: " + self.user.key().name()) #login the user! if self.user: res = GrafiteUser.login(self.user.key().name(), self.user.password, "XMPP") self.user.accessToken = res[1] elif msgSplit[0].lower() != 'verify': msg.reply("Hey, I couldn't really identify who you are! :-( Please register yourself..") return if msgSplit[0].lower() in commands: try: getattr(self,"cmd_" + msgSplit[0].lower())(msg) except Exception, e: msg.reply("Error!\n" + str(e)) import traceback msg.reply(traceback.format_exc())
def cmd_verify(self,message): from RegisterService import GrafiteUserUnregistered if self.user is not None: message.reply(STR_REGISTRATION_ALREADY_DONE) return msgSplit = message.body.split(' ') if len(msgSplit) != 2: message.reply(STR_PROMPT_REGISTER) return res = GrafiteUserUnregistered.all().filter("verifyToken =",msgSplit[1]) if not res.count(): message.reply(STR_REGISTRATION_INVALID_TOKEN) return newUser = res.fetch(1)[0] username = self._getUserName(message.sender) res,token,t = GrafiteUser.createNewUser(username, newUser.password, "Google Talk") if res != "success": message.reply(STR_REGISTRATION_ALREADY_DONE) return user = GrafiteUser.get_by_key_name(username) if user is None: message.reply(STR_REGISTRATION_FAILURE) return if GrafiteUser.all().filter("emailId =",newUser.emailId).count(): message.reply(STR_REGISTRATION_FAILURE_EMAIL_TAKEN) return user.emailId = newUser.emailId user.nickname = newUser.nickname user.put() newUser.delete() message.reply(STR_REGISTRATION_SUCCESS)
def post_pinged(self,usr): res = GrafiteUser.all().filter("emailId =",usr.emailId) if res.count()!=1: return {"result":"error","message":"EmailId not found!"} user = res.fetch(1)[0] res1,at, expire = GrafiteUser.login(user.key().name(), user.password, "Web-browser") if res1!="success": return {"result":"error","message":"Unable to login"} self.response.headers.add_header('Set-Cookie',UserService.makeCookieString( expire.strftime(time_format),{"access_token":at})) return {"result":"success","value":res.count()==1}
def searchUser(self): if self.request.get('q') in (None,""): allUsers = GrafiteUser.all().fetch(30) allUsers = map(lambda x: UserProfilePage._getProfileDetails(x), []) self.response.out.write(json.dumps({"result":"success","data":allUsers})) return query = str(self.request.get('q')) exactMatches = [] import re if re.match(r'^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$',query): try: exactMatches.append(UserProfilePage._getProfileDetails(GrafiteUser.get_by_key_name(query))) except Exception,e: pass self.response.out.write(json.dumps({"result":"success", "data":exactMatches})) return
def getUserAccessToken(pac): res = PermanentAccessCodes.all().filter("accessToken =",pac) if res.count()!=1: return {"result":"error","message":"Invalid PAC"} res = res.fetch(1)[0] res, userAt,t = GrafiteUser.login(res.user.key().name(),res.user.password, res.app.appName) if res != "success": return {"result":"error","message":"Unable to login user!"} return {"result":"success","AccessToken":userAt}
def userProfileView(self,userID): user = UserService.getCurrentUser(self) DATA = temp() if user: DATA.user = user c = GrafiteUser.all().filter("nickname =",userID) if c.count(): DATA.profileUser = c.fetch(1)[0] else: try: DATA.profileUser = GrafiteUser.get(db.Key(encoded=userID)) DATA.profileUser.gUserId = str(DATA.profileUser.key()) except Exception, e: self.response.out.write("OOPS! no such profile exists! Whence did you come?") self.error(404) return
def get(self): self.response.headers.add_header('Content-Type','application/json') res = dict(result="success") res['TotalUsers'] = GrafiteUser.all().count() user = GrafiteUser.all().order("-dateJoined").fetch(1)[0] res['LatestUserHTML'] = '<a href="%s">%s</a>'%(user.profileUrl,user.Nickname) obj = GrafiteUser.getOnlineUsers() res['OnlineUsersList'] = obj['value'] res['OnlineUsersCount'] = obj['count'] res['TotalStatuses'] = Status.getTotalStatuses() res['TotalReminders'] = ReminderService.getCount() user = UserService.getCurrentUser(self) if user: res['user'] = {} res['user']['Statuses'] = StatusService.getUserStatusCount(user) res['user']['Reminders'] = ReminderService.getUserCount(user) self.response.out.write(json.dumps(res))
def setEmail(self,email): res = GrafiteUserUnregistered.all().filter("emailId =",email) if res.count(): return {"result":"error","message":"Email already Registered!"} res = GrafiteUser.all().filter("nickname =",nick) if res.count(): return {"result":"error","message":"Email already Registered!"} self.emailId = email self.put() return {"result":"success"}
def renderSearchPage(self): class temp: pass DATA = temp() DATA.user = UserService.getCurrentUser(self) DATA.allUsers = GrafiteUser.all().fetch(300) DATA.allUsers = map(lambda x: UserProfilePage._getProfileDetails(x), DATA.allUsers) path = os.path.join(os.path.dirname(__file__), 'html/users.html') self.response.out.write(render(path, {'DATA':DATA}))
def setNickname(self,nick): if len(nick) < 6: return {"result":"error","message":"Username should be atleast 6 characters"} res = GrafiteUserUnregistered.all().filter("nickname =",nick) if res.count(): return {"result":"error","message":"Username already exists"} res = GrafiteUser.all().filter("nickname =",nick) if res.count(): return {"result":"error","message":"Username already exists"} self.nickname = nick self.put() return {"result":"success"}
def unfollow(self,user): self.response.headers.add_header("Content-Type","application/json") userId = self.request.get("gUser") if userId in (None,""): self.response.out.write(json.dumps({"result":"error","message":"Invalid Parameter!"})) return user2 = None try: user2 = GrafiteUser.get(db.Key(encoded=userId)) except Exception, e: self.response.out.write(json.dumps({"result":"error","message":"Invalid User ID","e":str(e)})) return
def getProfileDetails(self): userID = self.request.get('UserID') if userID in (None,""): self.response.out.write(json.dumps({"result":"error","message":"UserID not specified!"})) return if userID == "@me": curUser = UserService.getCurrentUserOrJsonError(self) if curUser is None: return self.response.out.write(json.dumps({"result":"success", "data":self._getProfileDetails(curUser)})) return c = GrafiteUser.all().filter("nickname =",userID) curUser = None if c.count(): curUser = c.fetch(1)[0] else: try: curUser = GrafiteUser.get(db.Key(encoded=userID)) except Exception, e: self.response.out.write(json.dumps({"result":"error","message":"No User!"})) return
allUsers = map(lambda x: UserProfilePage._getProfileDetails(x), []) self.response.out.write(json.dumps({"result":"success","data":allUsers})) return query = str(self.request.get('q')) exactMatches = [] import re if re.match(r'^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$',query): try: exactMatches.append(UserProfilePage._getProfileDetails(GrafiteUser.get_by_key_name(query))) except Exception,e: pass self.response.out.write(json.dumps({"result":"success", "data":exactMatches})) return exactMatches,matches = [],[] allUsers = GrafiteUser.all().fetch(GrafiteUser.all().count()) for x in allUsers: if hasattr(x, "nickname"): if str(x.nickname).lower() == str(query).lower(): exactMatches.append(UserProfilePage._getProfileDetails(x)) elif str(query).lower() in str(x.nickname).lower(): matches.append(UserProfilePage._getProfileDetails(x)) exactMatches.extend(matches) self.response.out.write(json.dumps({"result":"success", "data":exactMatches})) def userProfileView(self,userID): user = UserService.getCurrentUser(self) DATA = temp() if user: DATA.user = user