Пример #1
0
 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")
Пример #2
0
 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)
     
Пример #3
0
    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")
Пример #4
0
 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")
Пример #5
0
    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")
Пример #6
0
 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)
Пример #7
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))
Пример #8
0
 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")
Пример #9
0
 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()))
Пример #10
0
 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()))
Пример #11
0
 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)