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 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))