def testUpdateRanking(self): user1 = User(name="test1", email="*****@*****.**", password="******") user1.put() user2 = User(name="test2", email="*****@*****.**", password="******") user2.put() user3 = User(name="test3", email="*****@*****.**", password="******") user3.put() ranking_json = '{"title": "ranking", "itemNames": ["item1", "item2", "item3"], "itemContents": ["content1", "content2", "content3"], "ranks": [0, 1, 2]}' ranking_form = RankingForm(ranking_json) ranking = Ranking.create(user1, ranking_form) self.assertEqual(ranking.number_of_votes, 1) vote2 = Vote(parent=ranking, user=user2, ranks=[2,1,0]) vote2.put() ranking.update(vote2) self.assertEqual(ranking.number_of_votes, 2) vote3 = Vote(parent=ranking, user=user3, ranks=[2,1,0]) vote3.put() ranking.update(vote3) self.assertEqual(ranking.number_of_votes, 3) self.assertListEqual(ranking.get_ranks(), [[0, 1, 2], [2, 1, 0], [2, 1, 0]]) self.assertListEqual(ranking.ranks, [2, 1, 0]) self.assertEqual(ranking.user, user1) self.assertListEqual([user.key() for user in ranking.get_users()], [user.key() for user in User.all()]) self.assertTrue(ranking.is_sorted_by(user1), "Ranking should be sorted by user") self.assertTrue(ranking.is_sorted_by(user2), "Ranking should be sorted by user") self.assertTrue(ranking.is_sorted_by(user3), "Ranking should be sorted by user")
def get(self): type = self.request.get("type") if (type not in TYPES): self.error(400) return fetch = int(self.request.get("fetch")) offset = int(self.request.get("offset")) rankings = Ranking.all().order('-created').fetch(limit=fetch, offset=offset) response = [] for ranking in rankings: response_rank = {} response_rank["type"] = type response_rank["user"] = ranking.user.name response_rank["created"] = ranking.created.strftime("%Y-%m-%d %H:%M:%S") response_rank["id"] = ranking.get_id() response_rank["title"] = ranking.title response_rank["description"] = ranking.description response_rank["likes"] = ranking.number_of_likes response_rank["votes"] = ranking.number_of_votes response_rank["rank_items"] = [] items = ranking.get_items() for (i, item) in enumerate(items): response_item = {} response_item["id"] = item.get_id() response_item["type"] = type response_item["title"] = item.name response_item["score"] = i if type == "full": response_item["content"] = item.content response_rank["rank_items"].append(response_item) response.append(response_rank) self.write(response)
def post(self, user_name, ranking_id): user = User.get_by_name(user_name) ranking = Ranking.get_by_id(int(ranking_id)) ranking.like(user) if not user: self.error(404) if self.get_current_user(): self.write(str(ranking.number_of_likes)) else: self.redirect("/signup")
def get(self, ranking_id): ranking = Ranking.get_by_id(int(ranking_id)) if not ranking: self.error(404) return user = self.get_current_user() if user: is_sorted = ranking.is_sorted_by(user) self.render("ranking.html", user=ranking.user, ranking=ranking, is_sorted=is_sorted, current_user=user) else: self.redirect("/signup")
def testLike(self): user = User(name="test1", email="*****@*****.**", password="******") user.put() ranking_json = '{"title": "ranking", "itemNames": ["item1", "item2", "item3"], "itemContents": ["content1", "content2", "content3"], "ranks": [0, 1, 2]}' ranking_form = RankingForm(ranking_json) ranking = Ranking.create(user, ranking_form) self.assertEqual(ranking.number_of_likes, 0) ranking.like(user) self.assertEqual(ranking.number_of_likes, 1) ranking.like(user) self.assertEqual(ranking.number_of_likes, 0)
def post(self, ranking_id): user = self.get_current_user() ranking = Ranking.get_by_id(int(ranking_id)) if user in ranking.get_users(): self.response.out.write('You have already submitted this ranking!') return ranking_json = json.loads(self.request.get('ranking')) vote = Vote(user=user, parent=ranking, ranks=ranking_json["ranks"]) vote.put() ranking.update(vote) self.redirect('/ranking/'+str(ranking_id))
def testCreateRanking(self): name = "test" email ="*****@*****.**" user = User(name=name, email=email, password="******") user.put() ranking_json = '{"title": "ranking", "itemNames": ["item1", "item2", "item3"], "itemContents": ["content1", "content2", "content3"], "ranks": [0, 1, 2]}' ranking_form = RankingForm(ranking_json) ranking = Ranking.create(user, ranking_form) votes = user.rankings.fetch(10) self.assertEqual(len(votes), 1) self.assertListEqual(ranking.get_ranks(), [[0, 1, 2]]) items = ranking.get_items() self.assertEqual(len(items), 3) self.assertTrue(ranking.is_sorted_by(user), "Ranking should be sorted by user")
def post(self): user = self.get_current_user() ranking_form = RankingForm(self.request.get('ranking')) ranking = Ranking.create(user, ranking_form) time.sleep(0.2) self.redirect("/ranking/" + str(ranking.get_id()))
def render_main_page(self): user = self.get_current_user() rankings = Ranking.all().order('-created').fetch(limit=100, offset=0) self.render("main.html", current_user=user, user=user, rankings=rankings)