Example #1
0
 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())
Example #2
0
    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)
Example #3
0
    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
Example #5
0
 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}))
Example #10
0
    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"}
Example #11
0
    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