コード例 #1
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        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 aquarist WHERE username = ?',
                        (username, )).fetchone() is not None:
            error = f'Aquarist {username} is already registered.'

        if error is None:
            db.execute(
                'INSERT INTO aquarist (username, password) VALUES (?, ?)',
                (username, generate_password_hash(password)))
            db.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
コード例 #2
0
ファイル: routes.py プロジェクト: a5pire/turtle-tank
def update(id):
    tank = get_tank(id)

    if request.method == 'POST':
        name = request.form['name']
        error = None

        if not name:
            error = 'Name is required.'

        if error is not None:
            flash(error)
        else:
            length = float(request.form['length'])
            width = float(request.form['width'])
            depth = float(request.form['depth'])
            volume = Volumetrics.calculate_volume(length, width, depth)

            db = get_db()
            db.execute(
                'UPDATE tank SET name = ?, length = ?, width = ?, depth = ?, volume = ?'
                ' WHERE id = ?', (name, length, width, depth, volume, id))
            db.commit()
            flash('Tank updated!')

            return redirect(url_for('aquarium.index'))

    return render_template('aquarium/index.html', tank=tank)
コード例 #3
0
ファイル: routes.py プロジェクト: a5pire/turtle-tank
def create():
    if request.method == 'POST':
        name = request.form['name']
        length = float(request.form['length'])
        width = float(request.form['width'])
        depth = float(request.form['depth'])
        volume = Volumetrics.calculate_volume(length, width, depth)

        error = None

        if not (name and length and width and depth):
            error = 'Please enter all fields.'

        if error is not None:
            flash(error)
        else:

            db = get_db()
            db.execute(
                'INSERT INTO tank (tank_owner, name, length, width, depth, volume)'
                ' VALUES (?, ?, ?, ?, ?, ?)',
                (g.user['id'], name, length, width, depth, volume))

            db.commit()
            flash('New tank created!')

            return redirect(url_for('aquarium.index'))

    return render_template('aquarium/index.html')
コード例 #4
0
ファイル: routes.py プロジェクト: a5pire/turtle-tank
def index():
    db = get_db()
    tanks = db.execute(
        'SELECT t.id, name, length, width, depth, volume, tank_owner, username'
        ' FROM tank t JOIN aquarist a ON t.tank_owner = a.id'
        ' ORDER BY name DESC').fetchall()
    return render_template('aquarium/index.html', tanks=tanks)
コード例 #5
0
def load_logged_in_user():
    aquarist_id = session.get('aquarist_id')

    if aquarist_id is None:
        g.user = None
    else:
        g.user = get_db().execute('SELECT * FROM aquarist WHERE id = ?',
                                  (aquarist_id, )).fetchone()
コード例 #6
0
ファイル: routes.py プロジェクト: a5pire/turtle-tank
def delete(id):
    get_tank(id)
    db = get_db()
    db.execute('DELETE FROM tank WHERE id = ?', (id, ))
    db.commit()
    flash('Tank deleted!')

    return redirect(url_for('aquarium.index'))
コード例 #7
0
ファイル: routes.py プロジェクト: a5pire/turtle-tank
def get_tank(id, check_aquarist=True):
    tank = get_db().execute(
        'SELECT t.id, name, length, width, depth, volume, tank_owner'
        ' FROM tank t JOIN aquarist a ON t.tank_owner = a.id'
        ' WHERE t.id = ?', (id, )).fetchone()

    if tank is None:
        abort(404, "Tank id {0} doesn't exist.".format(id))

    if check_aquarist and tank['tank_owner'] != g.user['id']:
        abort(403)

    return tank
コード例 #8
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None

        aquarist = db.execute('SELECT * FROM aquarist WHERE username = ?',
                              (username, )).fetchone()

        if aquarist is None:
            error = 'Username is incorrect or doesnt exist.'
        elif not check_password_hash(aquarist['password'], password):
            error = 'Incorrect password.'

        if error is None:
            session.clear()
            session['aquarist_id'] = aquarist['id']
            return redirect(url_for('index'))

        flash(error)

    return render_template('aquarium/index.html')