def index():
    # stores row from group AND active game JOINTLY- USERspecific - games the USER is playing
    session["userrow"] = query_db(
        "SELECT * FROM games INNER JOIN groups ON groups.group_name=games.group_name INNER JOIN users ON users.user_id=groups.user_id WHERE users.user_id=? AND games.active=?",
        [session["user_id"], 1],
        one=True)
    # stores row from group AND active game JOINTLY where user is group-member - GROUPspecific
    session["gamerow"] = query_db(
        "SELECT * FROM groups INNER JOIN games ON games.group_name=groups.group_name INNER JOIN users ON groups.user_id=users.user_id WHERE groups.user_id=? AND games.active=?",
        [session["user_id"], 1],
        one=True)
    if session["userrow"] is None:
        if request.method == "POST":
            groups = query_db("SELECT group_name FROM groups WHERE user_id=?",
                              [session["user_id"]],
                              one=False)

            return render_template("new_game.html", groups=groups)
    else:
        return render_template("index.html", game=session["userrow"])

    return render_template("index.html", game=session["userrow"])
def archive():
    # these are all the sentences ever played by groups user is in, ORDERED BY TIMESTAMP
    sentences = query_db(
        "SELECT game_id, sentence, time FROM sentences INNER JOIN groups ON groups.group_name=sentences.group_name INNER JOIN users ON users.user_id=groups.user_id WHERE users.user_id=? ORDER BY time",
        [session["user_id"]],
        one=False)
    games = query_db(
        "SELECT games.game_id, time, games.group_name FROM sentences INNER JOIN groups ON groups.group_name=sentences.group_name INNER JOIN games ON games.game_id=sentences.game_id WHERE groups.user_id=? AND games.active=? GROUP BY games.game_id ORDER BY time",
        [session["user_id"], 0],
        one=False)
    # create dict "stories" saving only date and story-string
    stories = {}
    for game in games:
        s = ""
        for sen in sentences:
            if sen["game_id"] == game["game_id"]:
                s = s + sen["sentence"] + " "
        stories[game["time"]] = s

    # save dict in session, beacuse for some reason passed on stories (originally a dict) variable via archive.html only contains game["time"]-key, not value(story)
    session["stories"] = stories
    return render_template("archive.html", stories=stories)
def sign_up():
    # Clear session
    session.clear()
    #Ensure all fields filled out also if JS disabled
    if request.method == "POST":
        name = request.form.get("username")
        if not name:
            return apology("Please provide username")
        if not request.form.get("password") or not request.form.get(
                "confirmation"):
            return apology("Please provide password and confirm it")

        hashp = generate_password_hash(request.form.get("password"),
                                       method='pbkdf2:sha256',
                                       salt_length=8)
        if not check_password_hash(hashp, request.form.get("confirmation")):
            return apology("Password does not match confirmation.")

        try:
            cur = get_db().execute(
                "INSERT INTO users (name, hash) VALUES (:name, :hash)", {
                    "name": name,
                    "hash": hashp
                })
            get_db().commit()
        except sqlite3.IntegrityError:
            return apology("Username already exists")

        # Login user automatically, storing their id in session, then layout will also show index.html? &menu?
        session["user_id"] = query_db("SELECT user_id FROM users WHERE name=?",
                                      [name],
                                      one=True)["user_id"]
        session["name"] = query_db("SELECT name FROM users WHERE user_id=?",
                                   [session["user_id"]],
                                   one=True)["name"]
        return render_template("index.html")
    else:
        return render_template("sign_up.html")
Exemple #4
0
def profile(user_id):
    """Redirect to another user's homepage"""

    # Get the information of the person the user wishes to look at
    view_user = query_db("SELECT * FROM users WHERE id=?", [user_id], one=True)

    # Get the user's id
    user = session["user_id"]

    # Render template with my_prof set to Flase because user is accessing someone else's profile
    return render_template("index.html",
                           user=user,
                           view_user=view_user,
                           my_prof=False)
def new_game():
    # get group_name from form & initiating user's turn
    if request.method == "POST":
        group_name = request.form.get("group")

        # check that no game started with group where one of members is currently in an active game
        activeusers = query_db(
            "SELECT users.user_id FROM games INNER JOIN groups ON groups.group_name=games.group_name INNER JOIN users ON users.user_id=groups.user_id WHERE games.active=?",
            [
                True,
            ],
            one=False)
        members = query_db("SELECT user_id FROM groups WHERE group_name=?",
                           [group_name],
                           one=False)
        if len(members) < 3:
            flash(
                group_name +
                " does not have enough players. Add at least 3 to start a game."
            )
            return redirect("/")
        intersection = [value for value in activeusers if value in members]
        if intersection:
            flash("One or more members of selected group is busy playing.")
            return redirect("/")

        row = query_db("SELECT * FROM groups WHERE group_name=? AND user_id=?",
                       [group_name, session["user_id"]],
                       one=True)
        # new DB entry for new game
        get_db().execute(
            "INSERT INTO games (active, turn, group_name) VALUES (:active, :turn, :group_name)",
            {
                "active": 1,
                "turn": row["turn"],
                "group_name": row["group_name"]
            })
        get_db().commit()
        session["userrow"] = query_db(
            "SELECT * FROM games INNER JOIN groups ON groups.group_name=games.group_name INNER JOIN users ON users.user_id=groups.user_id WHERE users.user_id=? AND games.active=?",
            [session["user_id"], 1],
            one=True)
        session["gamerow"] = query_db(
            "SELECT * FROM groups INNER JOIN games ON games.group_name=groups.group_name INNER JOIN users ON groups.user_id=users.user_id WHERE groups.user_id=? AND games.active=?",
            [session["user_id"], 1],
            one=True)
        session["round"] = 1
        return render_template("live_game.html",
                               turn=row["turn"],
                               round=session["round"],
                               isturn=True,
                               group_name=group_name)
    else:
        groups = query_db("SELECT group_name FROM groups WHERE user_id=?",
                          [session["user_id"]],
                          one=False)
        return render_template("new_game.html", groups=groups)
Exemple #6
0
	def show_entry(self, requete):
		"""
		Afficher la fiche d'un adhérent
		"""
		
		numero = requete[6:]
		#cur = g.db.execute('select numero, nom, prenom,adr_rue, adr_CP, adr_ville from adherent where numero='+numero)
		#result = cur.fetchall()
		user = query_db('select * from adherent where numero=?',
                [numero], one=True)
		if user is None:
			return render_template('adherent.html')
		else:
			return render_template('adherent_fiche.html',
								entry=user, 
								parent=['liste','Liste des adhérents'])
Exemple #7
0
def chat():
    """Redirect to public chat page"""

    # Get current user
    cur_user = get_user(session["user_id"])

    # Get most recent 10 public chat messages from database
    messages = query_db(
        "SELECT * FROM messages WHERE buddy=? ORDER BY stamp DESC LIMIT 10",
        [""])

    # Redirect to public chat page
    return render_template("chat.html",
                           user=cur_user,
                           dest="",
                           messages=messages)
Exemple #8
0
def users():
    """Redirect to users page"""

    # Get all users
    users = query_db("SELECT * FROM users")

    # Get current user id
    user_id = session["user_id"]

    # Get current user information
    user = get_user(session["user_id"])

    # Redirect user to about page
    return render_template("users.html",
                           users=users,
                           curr_user=user_id,
                           user=user)
Exemple #9
0
def login():
    """Log user in"""
    # Forget any user_id
    session.clear()

    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Ensure username was submitted
        if not request.json["username"]:
            abort(400, 'must provide username')

        # Ensure password was submitted
        elif not request.json["password"]:
            abort(400, 'must provide password')

        # Query database for username
        result = query_db("SELECT * FROM users WHERE name = ?",
                          [request.json["username"]],
                          one=True)

        # Ensure username exists and password is correct
        if not result or not check_password_hash(result["hash"],
                                                 request.json["password"]):
            abort(400, 'invalid username and/or password')
            status = False

        # Remember which user has logged in
        session["user_id"] = result["id"]
        status = True

        # Redirect user to home page
        # return redirect("/")
        return jsonify({'result': status, 'displayName': result["name"]})

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        # return redirect(url_for('login'))
        return "login page"
Exemple #10
0
def login():
    """Log user in"""

    # Forget any user_id
    session.clear()

    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Ensure username was submitted
        if not request.form.get("username"):
            flash("Please provide username")
            return render_template("login.html", user='')

        # Ensure password was submitted
        elif not request.form.get("password"):
            flash("Please provide password")
            return render_template("login.html", user='')

        # Query database for username
        rows = query_db("SELECT * FROM users WHERE username = ?",
                        [request.form.get("username")],
                        one=True)

        # Ensure username exists and password is correct
        if rows == None or not check_password_hash(
                rows["hash"], request.form.get("password")):
            flash("Invalid username or password")
            return render_template("login.html", user='')

        # Remember which user has logged in
        session["user_id"] = rows["id"]

        # Redirect user to home page
        return redirect("/")

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("login.html", user='')
def add(group):
    if request.method == "POST":
        # set turn in group (for game) to highest before looping to add new members
        turn = query_db("SELECT MAX(turn) FROM groups WHERE group_name=?",
                        [group],
                        one=True)["MAX(turn)"]
        old_size = turn
        users = []
        # get usernames typed into fields[]
        for field in zip(request.form.getlist("fields[]")):
            if not field[0]:
                flash("Please select player(s)")
                return render_template("add.html", group=group)
            user = query_db("SELECT user_id FROM users WHERE name=?",
                            [field[0]],
                            one=True)
            # store users added in list to flash
            users.append(field[0])

            # check that user not duplicated in form AND group
            # if user enters inexistent username, remove all entries
            if user is None:
                get_db().execute(
                    "DELETE FROM groups WHERE group_name=? AND turn>?",
                    (group, old_size))
                get_db().commit()
                flash(field[0] + " is not registered")
                return redirect("/groups")
        # if username entered is already in group, remove all entries
        checkusers = query_db("SELECT user_id FROM groups WHERE group_name=?",
                              [group],
                              one=False)
        if checkusers:
            for check in checkusers:
                print("CHECK IS:", check["user_id"])
                if (turn >= old_size) and (user["user_id"]
                                           == check["user_id"]):
                    get_db().execute(
                        "DELETE FROM groups WHERE group_name=? AND turn>?",
                        (group, old_size))
                    get_db().commit()
                    flash(field[0] + " is already added to " + group)
                    return redirect("/groups")
        turn += 1

        print("USERS ARE: ", users)
        try:
            get_db().execute(
                "INSERT INTO groups (group_name, turn, user_id) VALUES (:group_name, :turn, :user_id)",
                {
                    "group_name": group,
                    "turn": turn,
                    "user_id": user["user_id"]
                })
            get_db().commit()

        except sqlite3.IntegrityError:
            return apology("something went wrong in DB")
        flash(", ".join(users) + " added!")
        return render_template("group.html", group=group)
    else:
        return render_template("add.html", group=group)