From 459aefb1249e99234006fe1e429d5b5605821ee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Gdula?= Date: Sun, 11 Jun 2023 16:56:12 +0300 Subject: [PATCH] Remake nav bar to work with more filters Add new background work on fixing tables --- .env | 2 +- TFR/requirements.txt | 1 + TFR/server/api.py | 81 +++++++------- TFR/server/auth.py | 2 +- TFR/server/config.py | 6 ++ TFR/server/models.py | 54 +++++----- TFR/server/static/{bg.png => background.png} | Bin TFR/server/static/background.webp | Bin 0 -> 13644 bytes TFR/server/static/sass/button.sass | 82 ++++++++++++++ TFR/server/static/sass/style.sass | 108 +++++-------------- TFR/server/static/title.webp | Bin 0 -> 45270 bytes TFR/server/templates/account.html | 3 +- TFR/server/templates/base.html | 35 +++--- TFR/server/templates/scores.html | 35 ++++-- TFR/server/views.py | 30 ++++-- 15 files changed, 248 insertions(+), 191 deletions(-) rename TFR/server/static/{bg.png => background.png} (100%) create mode 100644 TFR/server/static/background.webp create mode 100644 TFR/server/static/sass/button.sass create mode 100644 TFR/server/static/title.webp diff --git a/.env b/.env index 9f4f825..fe4ec14 100644 --- a/.env +++ b/.env @@ -5,5 +5,5 @@ POSTGRES_USER = leggy POSTGRES_PASSWORD = leggy POSTGRES_DB = leggy -THE_FRONT_ROOMS_DOMAIN = tfr.leggy.dev +THE_FRONT_ROOMS_DOMAIN = thefrontroomsga.me THE_FRONT_ROOMS_SECRETE_KEY = leggy diff --git a/TFR/requirements.txt b/TFR/requirements.txt index da0c99e..58c8de8 100644 --- a/TFR/requirements.txt +++ b/TFR/requirements.txt @@ -1,5 +1,6 @@ Gunicorn psycopg2-binary +shortuuid Flask Flask-SQLAlchemy Flask-Migrate diff --git a/TFR/server/api.py b/TFR/server/api.py index a676ec6..22fbdff 100644 --- a/TFR/server/api.py +++ b/TFR/server/api.py @@ -1,10 +1,11 @@ -import uuid +import shortuuid from flask import Blueprint, request, jsonify from flask_login import login_required, current_user from server.models import Tokens, Scores from server.extensions import db +from server.config import GAME_VERSION, GAME_VERSIONS, GAME_DIFFICULTIES, USER_MAX_TOKENS blueprint = Blueprint("api", __name__, url_prefix="/api") @@ -21,7 +22,7 @@ def tokens(): token = Tokens.query.filter_by(id=token_id).first() if not token: return jsonify({"error": "Token not found!"}), 404 - if token.holder != current_user.id: + if token.user_id != current_user.id: return jsonify({"error": "You do not own this token!"}), 403 db.session.delete(token) @@ -29,58 +30,56 @@ def tokens(): return jsonify({"success": "Token deleted!"}), 200 elif request.method == "POST": - if len(Tokens.query.filter_by(holder=current_user.id).all()) >= 5: - return jsonify({"error": "You already have 5 tokens!"}), 403 + if len(Tokens.query.filter_by(user_id=current_user.id).all()) >= USER_MAX_TOKENS: + return jsonify({"error": f"You already have {USER_MAX_TOKENS} tokens!"}), 403 - token = Tokens(token=str(uuid.uuid4()), holder=current_user.id) + new_string = str(shortuuid.ShortUUID().random(length=20)) + token = Tokens(token=new_string, user_id=current_user.id) db.session.add(token) db.session.commit() return jsonify({"success": "Token added!"}), 200 -@blueprint.route("/post", methods=["GET", "POST"]) +@blueprint.route("/post", methods=["POST"]) def post(): - if request.method == "GET": - return """ -
- - - - -
- """ - form = request.form + errors = [] if not form: - return "Invalid form", 400 + errors += "No form data provided!" if not form["token"]: - return "Invalid authentication", 401 + errors += "No token provided!" + if not form["version"]: + errors += "No version provided!" - # if not isinstance(form["score"], int): - # return "Score must be an integer", 400 - if int(form["score"]) < 0: - return "Score must be greater than 0", 400 - if int(form["difficulty"]) not in [0, 1, 2, 3, 4]: - # 0 = Easy, Level 1 - # 1 = Easy, Level 2 - # 2 = Easy, Level 3 - # 3 = Normal - # 4 = Hard - return "Invalid difficulty", 400 + if errors: + return jsonify(errors), 400 - if token := Tokens.query.filter_by(token=form["token"]).first(): - # Yupeee, authenticated - score = Scores( - score=int(form["score"]), - difficulty=int(form["difficulty"]), - scorer=token.holder, - ) - db.session.add(score) - db.session.commit() + try: + int(form["score"]) + int(form["difficulty"]) + except TypeError: + errors += "Invalid score and difficulty must be valid numbers!" - return "Success!", 200 + if int(form["difficulty"]) not in GAME_DIFFICULTIES: + errors += "Invalid difficulty!" - # L no authentication :3 - return "Authentication failed", 401 + token_data = Tokens.query.filter_by(token=form["token"]).first() + if not token_data: + errors += "Authentication failed!" + + if errors: + return jsonify(errors), 400 + + score = Scores( + score=int(form["score"]), + difficulty=int(form["difficulty"]), + version=form["version"], + user_id=token_data.user_id, + ) + + db.session.add(score) + db.session.commit() + + return "Success!", 200 diff --git a/TFR/server/auth.py b/TFR/server/auth.py index 8f3eee5..8856f38 100644 --- a/TFR/server/auth.py +++ b/TFR/server/auth.py @@ -31,7 +31,7 @@ def account(): if action == "password": flash("Insert password change function", "error") - token_list = Tokens.query.filter_by(holder=current_user.id).all() + token_list = Tokens.query.filter_by(user_id=current_user.id).all() return render_template("account.html", token_list=token_list) diff --git a/TFR/server/config.py b/TFR/server/config.py index b6fed09..08a4f82 100644 --- a/TFR/server/config.py +++ b/TFR/server/config.py @@ -13,3 +13,9 @@ SQLALCHEMY_POOL_RECYCLE = 621 MIGRATION_DIR = "/data/storage/migrations" INSTANCE_DIR = "/data/storage/instance" + +GAME_VERSION = "alpha" +GAME_VERSIONS = ["alpha"] +GAME_DIFFICULTIES = [0, 1, 2, 3, 4] + +USER_MAX_TOKENS = 3 diff --git a/TFR/server/models.py b/TFR/server/models.py index 43666fe..614d612 100644 --- a/TFR/server/models.py +++ b/TFR/server/models.py @@ -4,17 +4,16 @@ Database models for the server import uuid from flask_login import UserMixin from server.extensions import db +from server.config import GAME_VERSION class Scores(db.Model): """ Post table Scores supports anonymous posting, and instead just wants to post a score, - then the username must be provided.Otherwise, it's grabbed from the user table + then the username must be provided. Otherwise, it's grabbed from the user + table """ - - __tablename__ = "scores" - id = db.Column(db.Integer, primary_key=True) score = db.Column(db.Float, nullable=False) @@ -24,17 +23,34 @@ class Scores(db.Model): nullable=False, server_default=db.func.now(), ) + posted_at = db.Column( + db.DateTime, + nullable=False, + server_default=db.func.now(), + ) - scorer = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) + version = db.Column(db.String, default=GAME_VERSION) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", use_alter=True)) + + +class Tokens(db.Model): + """ + Token table + """ + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", use_alter=True)) + token = db.Column(db.String, nullable=False, unique=True) + created_at = db.Column( + db.DateTime, + nullable=False, + server_default=db.func.now(), + ) class Users(db.Model, UserMixin): """ User table """ - - __tablename__ = "users" - id = db.Column(db.Integer, primary_key=True) alt_id = db.Column(db.String, nullable=False, unique=True) @@ -46,25 +62,9 @@ class Users(db.Model, UserMixin): server_default=db.func.now(), ) - scores = db.relationship("Scores", backref="user", lazy=True) - tokens = db.relationship("Tokens", backref="user", lazy=True) + + scores = db.relationship("Scores", backref=db.backref('users', lazy=True)) + tokens = db.relationship("Tokens", backref=db.backref('users', lazy=True)) def get_id(self): return str(self.alt_id) - - -class Tokens(db.Model): - """ - Token table - """ - - __tablename__ = "tokens" - - id = db.Column(db.Integer, primary_key=True) - holder = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) - token = db.Column(db.String, nullable=False, unique=True) - created_at = db.Column( - db.DateTime, - nullable=False, - server_default=db.func.now(), - ) diff --git a/TFR/server/static/bg.png b/TFR/server/static/background.png similarity index 100% rename from TFR/server/static/bg.png rename to TFR/server/static/background.png diff --git a/TFR/server/static/background.webp b/TFR/server/static/background.webp new file mode 100644 index 0000000000000000000000000000000000000000..2c5f4c71a6bc6cb5a9d11864c269e69d9b1b502d GIT binary patch literal 13644 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≶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 literal 0 HcmV?d00001 diff --git a/TFR/server/static/sass/button.sass b/TFR/server/static/sass/button.sass new file mode 100644 index 0000000..c6588af --- /dev/null +++ b/TFR/server/static/sass/button.sass @@ -0,0 +1,82 @@ +.button + margin: auto 0.15rem + padding: 0.5rem 0.7rem + + display: flex + align-items: center + gap: 0.5rem + + text-decoration: none + white-space: nowrap + font-size: 0.9em + + background-color: RGBA($white, 0.02) + color: RGB($white) + + border-radius: 2px + border: 0 solid transparent + + transition: background-color 0.1s ease-in-out + + &:hover + background-color: RGBA($white, 0.3) + + &.primary + background-color: RGBA($primary, 0.02) + color: RGB($primary) + + &:hover + background-color: RGBA($primary, 0.3) + + &.secondary + background-color: RGBA($secondary, 0.02) + color: RGB($secondary) + + &:hover + background-color: RGBA($secondary, 0.3) + + > i + font-size: 1.25em + display: block + +.search + margin: auto 0.15rem + width: 100% + + position: relative + display: flex + flex-direction: row + + > label + padding: 0.5rem 0.7rem + + text-decoration: none + white-space: nowrap + font-size: 0.9em + + background-color: RGBA($white, 0.02) + color: RGB($white) + border-radius: 2px 0 0 2px + + > input + margin: 0 + padding: 0.5rem 0.7rem + + width: 100% + + text-decoration: none + white-space: nowrap + font-size: 0.9em + + background-color: RGBA($white, 0.02) + color: RGB($white) + + border: 0 solid transparent + border-left: 1px solid RGBA($white, 0.1) + border-radius: 0 2px 2px 0 + + transition: background-color 0.1s ease-in-out + + &:focus-visible, &:focus + background-color: RGBA($white, 0.1) + outline: 0 solid transparent diff --git a/TFR/server/static/sass/style.sass b/TFR/server/static/sass/style.sass index 719ae6d..b9ac4d8 100644 --- a/TFR/server/static/sass/style.sass +++ b/TFR/server/static/sass/style.sass @@ -5,23 +5,6 @@ $secondary: var(--secondary) $gold: var(--gold) $silver: var(--silver) $bronze: var(--bronze) -$darkBlue: var(--darkBlue) - -@mixin button($color) - text-decoration: none - text-align: center - white-space: nowrap - background-color: RGBA($color, 0.02) - color: RGB($color) - border-radius: 2px - border: 0 solid transparent - transition: background-color 0.2s ease-in-out, transform 0.1s ease-in-out - - &:hover - background-color: RGBA($color, 0.3) - transform: translateY(-0.1rem) - -@import url('https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700&display=swap') \:root --black: 21, 21, 21 @@ -31,7 +14,9 @@ $darkBlue: var(--darkBlue) --gold: 255, 222, 70 --silver: 229, 220, 206 --bronze: 193, 145, 69 - --darkBlue: 9, 9, 39 + +@import url('https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700&display=swap') +@import "button" * box-sizing: border-box @@ -46,17 +31,20 @@ body padding: 0 display: flex flex-direction: row - background-color: RGB($darkBlue) + background-color: RGB($black) color: RGB($white) .background - width: 100% - height: 100% - - object-fit: cover - position: absolute + position: fixed + inset: 0 + overflow: hidden z-index: 1 + > img + width: 100% + height: 100% + object-fit: cover + .app margin: 0 auto padding: 0 @@ -68,7 +56,7 @@ body display: flex flex-direction: column - background-color: rgba($darkBlue, 0.7) + background-color: rgba($black, 0.4) backdrop-filter: blur(5px) z-index: 2 @@ -77,14 +65,15 @@ body header padding: 1rem + background-image: linear-gradient(to bottom, RGB(var(--black)), transparent) - background-color: RGBA($darkBlue, 0.7) - +.title + margin-bottom: 1rem + height: auto > img - margin-bottom: 1rem width: 100% - height: auto - text-align: center + height: auto + max-width: 100% nav margin-top: 0.3rem @@ -94,31 +83,14 @@ nav flex-direction: row justify-content: center - > span + > form width: 100% + display: flex + flex-direction: row + justify-content: center - > a - margin: auto 0.15rem - padding: 0.5rem 0.7rem - - text-decoration: none - white-space: nowrap - font-size: 0.9em - - color: RGB($primary) - - &.button - @include button($white) - - &.primary - @include button($primary) - - &.secondary - @include button($secondary) - - > i - font-size: 1.25em - display: block + .spacer + width: 100% .flash display: flex @@ -133,7 +105,7 @@ nav width: 100% position: relative - background-color: RGB($darkBlue) + background-color: RGB($black) color: RGB($primary) transition: background-color 0.2s ease-in-out, padding 0.2s ease-in-out @@ -230,7 +202,7 @@ main display: flex flex-direction: column - background-color: rgba($darkBlue, 0.7) + background-color: rgba($black, 0.7) border-radius: 2px > h2 @@ -242,28 +214,6 @@ main margin: 0 0 1rem 0 font-size: 1em - .button - margin: 0 - padding: 0.5rem 0.7rem - - text-decoration: none - white-space: nowrap - font-size: 0.9em - - color: RGB($primary) - - > i - font-size: 1.25em - display: block - - @include button($white) - - &.primary - @include button($primary) - - &.secondary - @include button($secondary) - > table width: 100% border-collapse: collapse @@ -300,7 +250,7 @@ main border: 1px solid RGB($white) border-radius: 2px - background-color: RGB($darkBlue) + background-color: RGB($black) color: RGB($white) &:focus @@ -344,7 +294,7 @@ footer width: 100% display: flex flex-direction: row - background-color: RGBA($darkBlue, 0.7) + background-image: linear-gradient(to top, RGB(var(--black)), transparent) > p margin: 0 diff --git a/TFR/server/static/title.webp b/TFR/server/static/title.webp new file mode 100644 index 0000000000000000000000000000000000000000..8a5f790740f72127f4156d589ea91ffc4947d1ff GIT binary patch literal 45270 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

RYPxLEK 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 literal 0 HcmV?d00001 diff --git a/TFR/server/templates/account.html b/TFR/server/templates/account.html index 80a1ff3..514789e 100644 --- a/TFR/server/templates/account.html +++ b/TFR/server/templates/account.html @@ -2,8 +2,7 @@ {% block nav %}

{% endblock %} diff --git a/TFR/server/templates/base.html b/TFR/server/templates/base.html index cbc02b1..fb4ce1d 100644 --- a/TFR/server/templates/base.html +++ b/TFR/server/templates/base.html @@ -7,42 +7,39 @@ Front Rooms Highscores - - {% assets "scripts" %} - - {% endassets %} - - {% assets "styles" %} - - {% endassets %} + {% assets "scripts" %}{% endassets %} + {% assets "styles" %}{% endassets %} - The Front Rooms pause menu + + + The Front Rooms Level select render +
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} -

- - {{ message }} -

+

{{ message }}

{% endfor %} {% endif %} {% endwith %}
- The Front Rooms logo + + + The Front Rooms logo +