コード例 #1
0
def viewdata(id):
    db = get_db()

    db = get_db()
    player = db.execute(
        "SELECT p.id, playernumber, username, referee_id"
        " FROM player p"
        " JOIN game g"
        " JOIN user u"
        " ON p.game_id = g.id AND p.user_id = u.id"
        " WHERE p.id = (?)",
        (id, ),
    ).fetchone()

    if player["referee_id"] != g.user["id"]:
        abort(403)

    if request.method == "POST":
        viewdata = request.form["viewdata"]
        error = None

        if not viewdata:
            error = "viewdata is required."

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute("UPDATE player SET viewdata = ? WHERE id = ?",
                       (viewdata, id))
            db.commit()
            return "Submitted viewdata for " + player['username']

    return jsonify(player)
コード例 #2
0
ファイル: auth.py プロジェクト: lucdoe/se_foundations
def register():
    # If the user submitted the form, request.method will be 'POST'.
    # In this case, start validating the input.
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None

        # Validate that username and password are not empty.
        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'

        # Validate that username is not already registered by querying
        # the database and checking if a result is returned
        elif db.execute('SELECT id FROM user WHERE username = ?',
                        (username, )).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        # insert the new user data into the database
        if error is None:
            db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
                       (username, generate_password_hash(password)))
            db.commit()
            # redirected to the login page
            return redirect(url_for('auth.login'))

        # If validation fails, the error is shown
        flash(error)

    return render_template('auth/register.html')
コード例 #3
0
ファイル: player.py プロジェクト: pakfront/unity-webgl-flask
def get_player(id, check_user=True):
    """Get a post and its author by id.

    Checks that the id exists and optionally that the current user is
    the author.

    :param id: id of post to get
    :param check_user: require the current user to be the author
    :return: the post with author information
    :raise 404: if a post with the given id doesn't exist
    :raise 403: if the current user isn't the author
    """
    db = get_db()
    player = db.execute(
        "SELECT p.id, playernumber, gamename, username, p.user_id"
        ", commanddata"
        " FROM player p"
        " JOIN game g" 
        " JOIN user u" 
        " ON p.game_id = g.id AND p.user_id = u.id"
        " WHERE p.id = (?)",(id,),
        ).fetchone()   

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

    if check_user and player["user_id"] != g.user["id"]:
        abort(403)

    return player
コード例 #4
0
ファイル: trade.py プロジェクト: yoshi-kin/fx_data_manager
def dashboard():
    db = get_db()
    trades = db.execute(
            'SELECT * FROM trade ORDER BY date ASC'
        ).fetchall()
    dates = []
    results = []
    result_sum = 0
    each_result = []
    win = []
    lose = []
    win_count = 0
    lose_count = 0
    for trade in trades:
        date = datetime.datetime.strftime(trade['date'], '%Y-%m-%d')
        dates.append(date)
        result_sum = result_sum + trade['result']
        results.append(result_sum)
        each_result.append(trade['result'])
        if trade['result']> 0:
            win.append(trade['result'])
            win_count += 1
        elif trade['result'] < 0:
            lose.append(trade['result'])
            lose_count += 1
    all_sum = sum(each_result)
    win_sum = round(sum(win) / win_count, 1)
    lose_sum = round(sum(lose) / lose_count, 1)
    trade_count = len(results)
    win_ratio = round(win_count / trade_count * 100, 1)
    risk_reward = abs(round(win_sum / lose_sum, 1))



    return render_template('trade/dashboard.html', dates=dates, results=results, all_sum=all_sum, win_sum=win_sum, lose_sum=lose_sum, trade_count=trade_count, win_ratio=win_ratio,risk_reward=risk_reward)
コード例 #5
0
ファイル: auth.py プロジェクト: lucdoe/se_foundations
def login():
    # user is queried first and stored in a variable
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        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 is a dict that stores data across requests.
            # When validation succeeds, the user’s id is stored in a new session
            session.clear()
            session['user_id'] = user['id']
            return redirect(url_for('index'))

        flash(error)

    return render_template('auth/login.html')
コード例 #6
0
ファイル: player.py プロジェクト: pakfront/unity-webgl-flask
def join(id):
    db = get_db()
    player = db.execute(
        "SELECT p.id, playernumber, gamename, p.user_id"
        " FROM player p"
        " JOIN game g"
        " ON p.game_id = g.id"
        " WHERE p.id = (?)",(id,),
        ).fetchone()

    if player['user_id'] is not None:
        player = get_player(id, check_user=False)
        abort(403, "Player already occupied by {0}.".format(player['username']))


    user_id = g.user['id']    
    db.execute(
       "UPDATE player"
       " SET user_id = ?"
       " WHERE id = ?",(user_id, id,),
    )

    db.commit()

    player = get_player(id, check_user=False)
    return jsonify(player)  
コード例 #7
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        
        db = get_db()
        error = None

        user = db.execute(
            'SELECT * FROM user WHERE username = ?', (username,)
        ).fetchone()
        
        if user is None:
            error = 'User {} does not exist'.format(username)
        elif not check_password_hash(user['password'], password):
            error = 'Password not correct'

        if error is None:
            session.clear()
            session['user_id'] = user['id']
            session['username'] = user['username']
            return redirect(url_for('index'))

        flash(error)
    return render_template('auth/login.html')
コード例 #8
0
ファイル: auth.py プロジェクト: pakfront/unity-webgl-flask
def login():
    """Log in a registered user by adding the user id to the session."""
    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]
        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:
            # store the user id in a new session and return to the index
            session.clear()
            session["user_id"] = user["id"]

            if request.args.get('type') == 'json':
                return myprofile()
                
            return redirect(url_for("index"))

        flash(error)

    return render_template("auth/login.html")
コード例 #9
0
ファイル: auth.py プロジェクト: yoshi-kin/fx_data_manager
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 user WHERE username = ?', (username,)
        ).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        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('auth/register.html')
コード例 #10
0
ファイル: test_db.py プロジェクト: sourabhparime/HCC594RS
def app():
    app = create_app({'Testing': True, 'DATABASE': props.SQLALCHEMY_DATABASE_URI})

    with app.app_context():
        push_to_db()
        result = get_db().engine.execute(_data_sql)

    yield app
コード例 #11
0
ファイル: trade.py プロジェクト: yoshi-kin/fx_data_manager
def get_trade(id):
    db = get_db()
    trade = db.execute(
        'SELECT date, pare, amount, result FROM trade WHERE id = ?', (id,)
    ).fetchone()
    if trade is None:
        abort(404, 'There is not such a trade')
    return trade
コード例 #12
0
ファイル: auth.py プロジェクト: lucdoe/se_foundations
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        g.user = get_db().execute('SELECT * FROM user WHERE id = ?',
                                  (user_id, )).fetchone()
コード例 #13
0
ファイル: blog.py プロジェクト: abhiWriteCode/flask-blogpost
def index():
    db = get_db()
    posts = db.execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' ORDER BY created DESC'
    ).fetchall()

    return render_template('blog/index.html', posts=posts)
コード例 #14
0
ファイル: trade.py プロジェクト: yoshi-kin/fx_data_manager
def history():
    db = get_db()
    trades = db.execute(
            'SELECT * FROM trade ORDER BY date DESC'
        ).fetchall()
    page = request.args.get(get_page_parameter(), type=int, default=1)
    per_page = 10
    page_trades = trades[(page-1)*per_page: page*per_page]
    pagination = Pagination(page=page, total=len(trades), per_page=per_page, css_framework='bootstrap4')
    return render_template('trade/history.html', trades=page_trades, pagination=pagination)
コード例 #15
0
ファイル: player.py プロジェクト: pakfront/unity-webgl-flask
def commanddata(id):
    """Update a post if the current user is the author."""
    db = get_db()
    player = db.execute(
        "SELECT commanddata"
        " FROM player p"
        " WHERE p.id = (?)",(id,),
        ).fetchone() 

    return jsonify(player)
コード例 #16
0
ファイル: intro.py プロジェクト: pakfront/unity-webgl-flask
def mygames():
    db = get_db()
    games = db.execute(
        "SELECT g.id, gamename, turnnum"
        " FROM game g"
        " WHERE g.referee_id = ?",
        (g.user['id'], ),
    ).fetchall()

    return jsonify({"Items": games})
コード例 #17
0
ファイル: msgs.py プロジェクト: koster1889/testing-flask
def get_user(username):
    db = get_db()

    user = db.execute('SELECT id FROM user WHERE username = ?',
                      (username, )).fetchone()

    if user is not None:
        return user['id']
    else:
        return None
コード例 #18
0
ファイル: intro.py プロジェクト: pakfront/unity-webgl-flask
def myplayers():
    db = get_db()
    players = db.execute(
        "SELECT p.id, gamename, p.user_id, playernumber"
        " FROM player p"
        " JOIN game g"
        " ON p.user_id = ? AND p.game_id = g.id",
        (g.user['id'], ),
    ).fetchall()

    return jsonify({"Items": players})
コード例 #19
0
ファイル: auth.py プロジェクト: pakfront/unity-webgl-flask
def load_logged_in_user():
    """If a user id is stored in the session, load the user object from
    the database into ``g.user``."""
    user_id = session.get("user_id")

    if user_id is None:
        g.user = None
    else:
        g.user = (
            get_db().execute("SELECT * FROM user WHERE id = ?", (user_id,)).fetchone()
        )
コード例 #20
0
def turndata(id):
    db = get_db()

    game = db.execute(
        "SELECT id, referee_id, turndata, turnnum, gamename"
        " FROM game g"
        " WHERE g.id = (?)",
        (id, ),
    ).fetchone()

    if game["referee_id"] != g.user["id"]:
        abort(403)

    if request.method == "POST":
        turndata = request.form["turndata"]
        turnnum = int(request.form["turnnum"])
        error = None

        if not turndata:
            error = "turndata is required."
        if not turnnum:
            error = "turnnum is required."
        currentturnnum = int(game["turnnum"])
        if turnnum <= currentturnnum:
            error = "turnnum " + turnnum + " is <= game turnnum " + currentturnnum

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                "UPDATE game SET turndata = ?, turnnum = ? WHERE id = ?",
                (turndata, turnnum, id))
            db.commit()
            return "Submitted turndata for " + game['gamename']
            # return redirect(url_for("blog.index"))

    return jsonify(game)
コード例 #21
0
ファイル: trade.py プロジェクト: yoshi-kin/fx_data_manager
def update(id):
    trade = get_trade(id)
    if request.method == 'POST':       
        date = request.form['date']
        pare = request.form['pare']
        amount = request.form['amount']
        result = request.form['result']
        db = get_db()
        db.execute(
            'UPDATE trade SET date=?, pare=?, amount=?, result=? WHERE id=?', (date, pare, amount, result, id)
        )
        db.commit()
        return redirect(url_for('trade.history'))
    return render_template('trade/update.html', trade=trade)
コード例 #22
0
def get_post(id, check_author=True):
    db = get_db()
    post = db.execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' WHERE p.id = ?', (id, )).fetchone()

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

    if check_author and post['author_id'] != g.user['id']:
        abort(403)

    return post
コード例 #23
0
ファイル: player.py プロジェクト: pakfront/unity-webgl-flask
def submit(id):
    """Update a post if the current user is the author."""
    db = get_db()
    player = db.execute(
        "SELECT p.id, playernumber, gamename, username, p.user_id, commanddata"
        ", commanddata"
        " FROM player p"
        " JOIN game g" 
        " JOIN user u" 
        " ON p.game_id = g.id AND p.user_id = u.id"
        " WHERE p.id = (?)",(id,),
        ).fetchone() 

    if player['commanddata'] is not None:
        abort(403, "Player {0} {1} has already submitted their turn".format(player['id'], player['username']))

    if request.method == "POST":
        commanddata = request.form["commanddata"]
        error = None

        if not commanddata:
            error = "commanddata is required."

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                "UPDATE player SET commanddata = ? WHERE id = ?", (commanddata, id)
            )
            db.commit()
            return "Submitted orders for "+player['username']
            # return redirect(url_for("blog.index"))

    # return jsonify(player)

    return render_template("player/submit.html", player=player)  
コード例 #24
0
ファイル: trade.py プロジェクト: yoshi-kin/fx_data_manager
def create():
    if request.method == 'POST':
        date = request.form['date']
        pare = request.form['pare']
        amount = request.form['amount']
        result = request.form['result']

        db = get_db()
        db.execute(
            'INSERT INTO trade (user_id, date,   pare, amount, result)'
            'VALUES (?,?,?,?,?)',(g.user['id'], date, pare, amount, result)
        )
        db.commit()
        return redirect(url_for('trade.history'))

    return render_template('trade/create.html')
コード例 #25
0
ファイル: intro.py プロジェクト: pakfront/unity-webgl-flask
def players():
    db = get_db()
    # players = db.execute(
    #     "SELECT gamename, username"
    #     " FROM player p"
    #     " JOIN game g"
    #     " JOIN user u"
    #     " ON p.game_id = g.id AND p.user_id = u.id"
    # ).fetchall()

    players = db.execute("SELECT p.id, gamename, p.user_id, playernumber"
                         " FROM player p"
                         " JOIN game g"
                         " ON p.game_id = g.id").fetchall()

    if request.args.get('type') == 'json':
        return jsonify(players)
    return render_template("intro/index.html", players=players)
コード例 #26
0
def register():
    if request.method == 'POST':
        keyword = request.form['keyword']
        error = None
        db = get_db()

        if not keyword:
            error = 'Keyword is required'
        elif db.execute('SELECT id FROM keyword WHERE text = ?;',
                        (keyword, )).fetchone() is not None:
            error = f'Keyword {keyword} is already registered.'

        if error is None:
            db.execute('INSERT INTO keyword (text) VALUES (?);', (keyword, ))
            db.commit()
            return redirect(url_for('keyword.index'))
        flash(error)

    return render_template('keyword/register.html')
コード例 #27
0
ファイル: auth.py プロジェクト: pakfront/unity-webgl-flask
def register():
    """Register a new user.

    Validates that the username is not already taken. Hashes the
    password for security.
    """
    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 user WHERE username = ?", (username,)).fetchone()
            is not None
        ):
            error = "User {0} is already registered.".format(username)

        if error is None:
            # the name is available, store it in the database and go to
            # the login page
            db.execute(
                "INSERT INTO user (username, password) VALUES (?, ?)",
                (username, generate_password_hash(password)),
            )
            db.commit()

            # db.execute(
            #     "INSERT INTO post (nickname, score, author_id) VALUES (?, ?, ?)",
            #     (username, 0, g.user["id"]),
            # )
            # db.commit()

            return redirect(url_for("auth.login"))

        flash(error)

    return render_template("auth/register.html")
コード例 #28
0
def update(id):
    post = get_post(id)

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

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute('UPDATE post SET title = ?, body = ?'
                       ' WHERE id = ?', (title, body, id))
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/update.html', post=post)
コード例 #29
0
def commanddata(id):
    db = get_db()

    game = db.execute(
        "SELECT g.id, gamename, referee_id"
        " FROM game g"
        " WHERE g.id = (?)",
        (id, ),
    ).fetchone()

    if game["referee_id"] != g.user["id"]:
        abort(403)

    players = db.execute(
        "SELECT p.id, commanddata"
        " FROM player p"
        " WHERE p.game_id = (?)",
        (id, ),
    ).fetchall()

    return jsonify({"Items": players})
コード例 #30
0
ファイル: intro.py プロジェクト: pakfront/unity-webgl-flask
def index():
    db = get_db()
    games = db.execute(
        "SELECT g.id, gamename, g.created, summary, username, referee_id"
        " FROM game g"
        " JOIN user u"
        " ON g.referee_id = u.id"
        " ORDER BY g.created DESC").fetchall()

    players = {}
    for game in games:
        players[game['id']] = db.execute(
            "SELECT p.id, playernumber, username, user_id, turnnum"
            " FROM player p"
            " JOIN user u"
            " JOIN game g"
            " ON p.user_id = u.id AND p.game_id = g.id"
            " WHERE game_id = (?)",
            (game['id'], ),
        ).fetchall()

    openseats = {}
    for game in games:
        openseats[game['id']] = db.execute(
            "SELECT id, playernumber"
            " FROM player p"
            " WHERE p.user_id IS null AND game_id = (?)",
            (game['id'], ),
        ).fetchall()

    if request.args.get('type') == 'json':
        # return jsonify(games)
        return jsonify(openseats)
    print(players)
    print(openseats)

    return render_template("intro/index.html",
                           games=games,
                           players=players,
                           openseats=openseats)