def post(self): user = tusers.get_current_user() if user: #Check if we are modifying a tournament or making a new one if self.request.get('id'): new_tournament = ndb.Key('Tournament', int(self.request.get('id'))).get() else: new_tournament = Tournament() new_tournament.name = self.request.get('name') new_tournament.owner = [user.key] new_tournament.trackpin = pin_gen() dates_valid = True try: new_tournament.start = datetime.datetime.strptime(self.request.get('start'), '%Y-%m-%d').date() new_tournament.end = datetime.datetime.strptime(self.request.get('end'), '%Y-%m-%d').date() except ValueError: dates_valid = False if (dates_valid and len(new_tournament.name) > 0): new_tournament.put() #Send the user back to the tournaments page self.redirect('/tournaments') else: self.redirect(tusers.create_login_url(self.request.uri))
def create_tournament(payload): data = request.json # Prepare game game = Game.query.filter(Game.id == data['gameId']).first() if not game: game = Game.query.filter(Game.name.ilike(data['gameName'].strip())).first() if not game: game = Game(name=data['gameName']) db.session.add(game) db.session.flush() tournament = Tournament(name=data) # Generate the UUID uuid_len = 6 tries = 0 max_tries = 10 tournament_found = True uuid = '' while tournament_found: if tries >= max_tries: tries = 0 uuid_len += 1 tries += 1 uuid = generate_uuid(uuid_len) tournament_found = db.session.query(Tournament).filter(tournament.uuid == uuid).first() tournament.uuid = uuid tournament.name = data['name'] tournament.max_participants = data['maxParticipants'] if 'startDate' in data: tournament.start_date = data['startDate'] if 'startDateTz' in data: tournament.start_date_tz = data['startDateTz'] tournament.game_id = game.id user = auth.get_logged_user() tournament.creator_id = user.id db.session.add(tournament) db.session.flush() db.session.commit() return jsonify(tournament.long()), 201
from selenium import webdriver from util import * import lxml from bs4 import BeautifulSoup from models import Tournament ATP_CALENDAR_URL = 'http://tennisabstract.com/reports/atp_calendar.html' if __name__ == '__main__': # get page source driver = webdriver.PhantomJS() driver.get(ATP_CALENDAR_URL) source = driver.page_source # parse tournaments and add to database session = mysql_session(ensure_created=True) soup = BeautifulSoup(source, "lxml") rows = soup.find(id='reportable').find('tbody').find_all('tr') for row in rows: cells = row.find_all('td') t = Tournament() t.name = cells[1].text t.surface = cells[2].text t.level = cells[3].text session.add(t) session.commit() print 'Done.'