def addchallenge(): db = get_db() gamelist = db.execute('SELECT gamename FROM games').fetchall() if request.method == 'POST': game = request.form['game'] points = int(request.form['format']) try: (position_lat, position_lng) = request.form['position'][7:-1].split(',') except: return redirect('/') chal = request.form['challenge'] year, month, day = request.form['date'].split('-') day = f'{year}-{month}-{day}' if position_lat != '' and position_lng != '': gameid = db.execute('SELECT id FROM games WHERE gamename=?', (game, )).fetchone() db.execute( 'INSERT INTO challenges (author_id, format, body, place_lat, place_lng, game_id, gamedate) VALUES (?, ?, ?, ?, ?, ?, strftime(?))', (g.user['id'], points, chal, float(position_lat.strip()), float(position_lng.strip()), gameid['id'], day)) db.commit() return redirect(url_for('mapper.opponentmap')) else: flash('You must set a marker on map.') return render_template('challenge.html', gamelist=gamelist)
def opponentmap(): db = get_db() challenges = db.execute( 'SELECT chal.id, format, body, place_lat, place_lng, username, gamename, gamedate' ' FROM challenges chal JOIN user u ON chal.author_id = u.id' ' JOIN games ON chal.game_id = games.id' ).fetchall() return render_template('map.html', challenges=challenges)
def load_logged_in_user(): user_id = session.get('user_id') db = get_db() if user_id is None: g.user = None else: g.user = db.execute('SELECT * FROM user WHERE id = ?', (user_id, )).fetchone() discussions = db.execute( f"""SELECT DISTINCT challenges.id, gamedate, gamename FROM challenges LEFT JOIN answer ON answer.chal_id = challenges.id JOIN games ON challenges.game_id = games.id WHERE challenges.author_id={user_id} OR answer.author_id={user_id}""" ).fetchall() g.disc = discussions
def login(): if request.method == 'POST': username = request.form['username'] password = request.form['passwd'] db = get_db() error = None user = db.execute('SELECT * FROM user WHERE username == ?', (username, )).fetchone() if user is None: error = 'Incorrect username.' elif not check_password_hash(user['password'], password): error = 'Incorrect password.' if error is None: session.clear() session['user_id'] = user['id'] return redirect('/') flash(error) return render_template('login.html')
def register(): if request.method == 'POST': username = request.form['username'] password = request.form['passwd'] db = get_db() error = None if not username: error = 'Username is required.' elif not password: error = 'Password is required.' elif db.execute('SELECT id FROM user WHERE username = ?', (username, )).fetchone() is not None: error = f'User {username} is already registered.' if error is None: db.execute('INSERT INTO user (username, password) VALUES (?, ?)', (username, generate_password_hash(password))) db.commit() return redirect(url_for('auth.login')) flash(error) return render_template('/register.html')
def index(): db=get_db() chalnum=len(db.execute( 'SELECT id FROM challenges' ).fetchall()) return render_template('index.html', num=chalnum)