Esempio n. 1
0
    def post(self, name):
        _entry = EntryModel.find_by_name(name)
        competition = CompetitionModel.find_by_name(name)
        if competition:
          if competition.isFinished:
            return {'message': "The competition '{}' is Finished! Can not accept more entries!".format(name)}

          competition_num_tries = competition.numTrys
        else:
          return {'message': "The competition '{}' doesen't exists.".format(name)}

        data = Entry.parser.parse_args()
        competition_id = CompetitionModel.find_competition_id(name)
        athlete_num_tries = EntryModel.find_athlete_tries(competition_id, data['atleta'])

        if _entry and athlete_num_tries and athlete_num_tries >= competition_num_tries:
            return {'message': "{} has reached the maximum number of attempts in {} competition.".format(data['atleta'], name)}, 500

        competition = CompetitionModel.find_by_name(name)
        entry = EntryModel(data['atleta'], data['value'], data['unidade'], competition.id)

        try:
            entry.save_to_db()
        except:
            return {"message": "An error occurred inserting the entry."}, 500

        return entry.json(), 201
Esempio n. 2
0
    def test_put_update_competition(self):
        with self.app() as c:
            with self.app_context():
                c.put('/competition/100m', data={'isFinished': False, 'numTrys': 1})
                r = c.put('/competition/100m', data={'isFinished': False, 'numTrys': 2})

                self.assertEqual(r.status_code, 200)
                self.assertEqual(CompetitionModel.find_by_name('100m').numTrys, 2)
Esempio n. 3
0
    def test_create_competition(self):
        with self.app() as c:
            with self.app_context():
                r = c.post('/competition/test', data={'isFinished': False, 'numTrys': 1})

                self.assertEqual(r.status_code, 201)
                self.assertIsNotNone(CompetitionModel.find_by_name('test'))
                self.assertDictEqual(d1={'competicao': 'test', 'entrys': [], 'isFinished': False, 'numTrys': 1},
                                     d2=json.loads(r.data.decode('utf-8')))
    def test_crud(self):
        with self.app_context():
            competition = CompetitionModel('test', False, 1)

            self.assertIsNone(
                CompetitionModel.find_by_name('test'),
                "Found an competition with name 'test' before save_to_db")

            competition.save_to_db()

            self.assertIsNotNone(
                CompetitionModel.find_by_name('test'),
                "Did not find a competition with name 'test' after save_to_db")

            competition.delete_from_db()

            self.assertIsNone(
                CompetitionModel.find_by_name('test'),
                "Found an competition with name 'test' after delete_from_db")
Esempio n. 5
0
    def test_put_competition(self):
        with self.app() as c:
            with self.app_context():
                CompetitionModel('100m', False, 1).save_to_db()
                r = c.put('/competition/100m', data={'isFinished': False, 'numTrys': 2})

                self.assertEqual(r.status_code, 200)
                self.assertEqual(CompetitionModel.find_by_name('100m').numTrys, 2)
                self.assertDictEqual(d1={'competicao': '100m', 'entrys': [], 'isFinished': True, 'numTrys': 2},
                                     d2=json.loads(r.data.decode('utf-8')))
    def post(self, name):
        competition = CompetitionModel.find_by_name(name)

        if competition is None:
            return {'message': 'Competition not found'}, 404
        else:
            competition.isFinished = True

        competition.save_to_db()

        return competition.json(), 200
    def put(self, name):
        data = Competition.parser.parse_args()
        competition = CompetitionModel.find_by_name(name)

        if competition:
            competition.name = name
            competition.isFinished = data['isFinished']
            competition.numTrys = data['numTrys']
        else:
            competition = CompetitionModel(name, data['isFinished'],
                                           data['numTrys'])

        competition.save_to_db()

        return competition.json()
    def post(self, name):
        if CompetitionModel.find_by_name(name):
            return {
                'message':
                "An competition with name '{}' already exists.".format(name)
            }, 500

        data = Competition.parser.parse_args()
        competition = CompetitionModel(name, 0, data['numTrys'])

        try:
            competition.save_to_db()
        except:
            return {
                "message": "An error occurred inserting the competition."
            }, 500

        return competition.json(), 201
    def get(self, name):
        competition = CompetitionModel.find_by_name(name)
        if competition:
            competition_id = CompetitionModel.find_competition_id(name)
            if competition.competicao.find("ardo") != -1:
                #same as
                #query = "SELECT atleta FROM entrys WHERE competition_id=? ORDER BY value desc"
                return [
                    entry.json() for entry in EntryModel.query.filter_by(
                        competition_id=competition_id).order_by(
                            EntryModel.value.desc())
                ]
            else:
                #query = "SELECT atleta FROM entrys WHERE competition_id=? ORDER BY value asc"
                return [
                    entry.json() for entry in EntryModel.query.filter_by(
                        competition_id=competition_id).order_by('value')
                ]

        return {'message': 'Competition not found'}, 404
    def delete(self, name):
        competition = CompetitionModel.find_by_name(name)
        if competition:
            competition.delete_from_db()

        return {'message': 'Competition deleted'}, 200
 def get(self, name):
     competition = CompetitionModel.find_by_name(name)
     if competition:
         return competition.json()
     return {'message': 'Competition not found'}, 404