def useSchool(self, schoolData): self.school = Schools.gql("WHERE school_id = :1", schoolData["id"]).get() if self.school == None: # not found, insert it self.school = Schools( school_id=schoolData["id"], name=schoolData["name"], lat=schoolData["lat"], lng=schoolData["lng"] ) self.school.put() # create a new up/downvote key in memcache key = "SchoolUpvote." + self.school.school_id memcache.add(key, 0) key = "SchoolDownvote." + self.school.school_id memcache.add(key, 0)
def schoolUpvote(self, schoolID, userID): upvotes = memcache.get("UserSchoolUpvote.%s" % userID) user = User.get_by_id(int(userID)) if upvotes == None: upvotes = user.upvotes key = "SchoolUpvote." + schoolID vote = memcache.get(key) # search if school already included if schoolID not in upvotes: self.school = Schools.gql("WHERE school_id = :1", schoolID).get() if vote == None: vote = self.school.upvote memcache.add(key, vote) vote = memcache.incr(key) self.school.upvote = vote self.school.put() logging.info("upvoted school %s" % schoolID) # store user upvoted school key = "UserSchoolUpvote.%s" % userID if upvotes != "": upvotes = "%s,%s" % (upvotes, schoolID) else: upvotes = "%s" % schoolID logging.info("storing upvote for key %s" % key) memcache.set(key, upvotes) user.upvotes = upvotes user.put() return vote
class RateSchool(object): school = None def useSchool(self, schoolData): self.school = Schools.gql("WHERE school_id = :1", schoolData["id"]).get() if self.school == None: # not found, insert it self.school = Schools( school_id=schoolData["id"], name=schoolData["name"], lat=schoolData["lat"], lng=schoolData["lng"] ) self.school.put() # create a new up/downvote key in memcache key = "SchoolUpvote." + self.school.school_id memcache.add(key, 0) key = "SchoolDownvote." + self.school.school_id memcache.add(key, 0) def schoolUpvote(self, schoolID, userID): upvotes = memcache.get("UserSchoolUpvote.%s" % userID) user = User.get_by_id(int(userID)) if upvotes == None: upvotes = user.upvotes key = "SchoolUpvote." + schoolID vote = memcache.get(key) # search if school already included if schoolID not in upvotes: self.school = Schools.gql("WHERE school_id = :1", schoolID).get() if vote == None: vote = self.school.upvote memcache.add(key, vote) vote = memcache.incr(key) self.school.upvote = vote self.school.put() logging.info("upvoted school %s" % schoolID) # store user upvoted school key = "UserSchoolUpvote.%s" % userID if upvotes != "": upvotes = "%s,%s" % (upvotes, schoolID) else: upvotes = "%s" % schoolID logging.info("storing upvote for key %s" % key) memcache.set(key, upvotes) user.upvotes = upvotes user.put() return vote def schoolDownvote(self, schoolID, userID): downvotes = memcache.get("UserSchoolDownvote.%s" % userID) if downvotes == None: user = User.get_by_id(int(userID)) downvotes = user.downvotes key = "SchoolDownvote." + schoolID vote = memcache.get(key) # search if school already included if schoolID not in downvotes: self.school = Schools.gql("WHERE school_id = :1", schoolID).get() if vote == None: vote = self.school.downvote memcache.add(key, vote) vote = memcache.incr(key) self.school.downvote = vote self.school.put() logging.info("downvoted school %s" % schoolID) # store user upvoted school key = "UserSchoolDownvote.%s" % userID if downvotes != "": downvotes = "%s,%s" % (downvotes, schoolID) else: downvotes = "%s" % schoolID logging.info("storing downvote for key %s" % key) memcache.set(key, downvotes) return vote def commentUpvote(self, commentID): key = "CommentUpvote." + commentID vote = memcache.incr(key) return vote def commentDownvote(self, commentID): key = "CommentDownvote." + commentID vote = memcache.decr(key) return vote def addComment(self, schoolID, commentData): user = User.get_by_id(int(commentData["userID"])) comment = Comments(school_id=schoolID, text=commentData["text"], user=user) comment.put() # create a new up/downvote key in memcache key = "CommentUpvote.%i" % comment.key().id() memcache.add(key, 0) key = "CommentDownvote.%i" % comment.key().id() memcache.add(key, 0) return comment def schoolData(self): # get all comments comments = Comments.gql("WHERE school_id = :1 AND visible = True", self.school.school_id) commentsList = [] if comments: for c in comments: comment = { "id": c.key().id(), "text": c.text, "reports": c.reports, "user": {"name": c.user.name, "gender": c.user.gender}, "upvote": memcache.get("CommentUpvote.%i" % c.key().id()), "downvote": memcache.get("CommentDownvote.%i" % c.key().id()), } commentsList.append(comment) upvote = memcache.get("SchoolUpvote." + self.school.school_id) downvote = memcache.get("SchoolDownvote." + self.school.school_id) if upvote == None: upvote = self.school.upvote memcache.add("SchoolUpvote." + self.school.school_id, upvote) if downvote == None: downvote = self.school.downvote memcache.add("SchoolDownvote." + self.school.school_id, downvote) schoolData = {"comments": commentsList, "upvote": upvote, "downvote": downvote} return schoolData def userSignup(self, userData): # check if email exist user = User.gql("WHERE email = :1", userData["email"]) if user.count() == 1: return user.get().key().id() else: # encode password password = userData["password"] + PASSWORD_SALT h = hashlib.md5() h.update(password) user = User( name=userData["name"], email=userData["email"], password=h.hexdigest(), gender=userData["gender"] ) user.put() key = "UserSchoolUpvote.%i" % user.key().id() memcache.add(key, "") key = "UserSchoolDownvote.%i" % user.key().id() memcache.add(key, "") return user.key().id() def userLogin(self, userData): password = userData["password"] + PASSWORD_SALT h = hashlib.md5() h.update(password) user = User.gql("WHERE email = :1 AND password = :2", userData["email"], h.hexdigest()) if user.count() == 1: return user.get().key().id() else: return 0 def userSchoolVotes(self, userID): key = "UserSchoolUpvote.%s" % userID upvotes = memcache.get(key) key = "UserSchoolDownvote.%s" % userID downvotes = memcache.add(key) return {"upvotes": upvotes, "downvotes": downvotes} def clearMemcache(self): memcache.flush_all()