From 5f2444c52bdfebd13262e277bc4e8e95414161c5 Mon Sep 17 00:00:00 2001 From: Raya Petkova <122923696+rayapetkova@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:18:50 +0300 Subject: [PATCH 1/8] 404 page when a there is no submitted quest as written in the url --- app/routes/user_submit_quest_routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routes/user_submit_quest_routes.py b/app/routes/user_submit_quest_routes.py index da1004d..07e15bc 100644 --- a/app/routes/user_submit_quest_routes.py +++ b/app/routes/user_submit_quest_routes.py @@ -276,7 +276,7 @@ def post_comment(): @bp_usq.route('/edit_submited_quest/', methods=['GET']) @login_required def open_submited_quest_as_user(quest_id): - submited_quest = SubmitedQuest.query.filter_by(quest_id=quest_id).first() + submited_quest = SubmitedQuest.query.filter_by(quest_id=quest_id).first_or_404() # Throw 404 error if the user is not the author of the quest OR the user is not an admin if current_user.username != submited_quest.quest_author and current_user.user_role != 'Admin': From 9a2ed0afe418a40de396acdd1fd23dbf3e33c324 Mon Sep 17 00:00:00 2001 From: Raya Petkova <122923696+rayapetkova@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:20:49 +0300 Subject: [PATCH 2/8] Admin - 404 page when there is no submitted quest as written in the url --- app/routes/user_submit_quest_routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routes/user_submit_quest_routes.py b/app/routes/user_submit_quest_routes.py index 07e15bc..4613aec 100644 --- a/app/routes/user_submit_quest_routes.py +++ b/app/routes/user_submit_quest_routes.py @@ -32,7 +32,7 @@ def open_user_submit_quest(): @login_required @admin_required def open_submited_quest(quest_id): - submited_quest = SubmitedQuest.query.filter_by(quest_id=quest_id).first() + submited_quest = SubmitedQuest.query.filter_by(quest_id=quest_id).first_or_404() user_avatar = base64.b64encode(current_user.avatar).decode('utf-8') form = QuestApprovalForm() form.submited_quest_id.data = quest_id From 94778ed6466cd77e81258b43bf4ca683ade2e550 Mon Sep 17 00:00:00 2001 From: ragnarok dev-station Date: Thu, 17 Oct 2024 20:28:02 +0300 Subject: [PATCH 3/8] submited quests & quest solution tables reorder --- app/routes/user_routes.py | 15 +++++++++------ app/static/js/questsTable.js | 9 ++++++--- app/templates/user_profile.html | 1 - 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/routes/user_routes.py b/app/routes/user_routes.py index ca57033..70493a2 100644 --- a/app/routes/user_routes.py +++ b/app/routes/user_routes.py @@ -1,7 +1,7 @@ import base64, json, random, string, io from datetime import datetime from bson import ObjectId -from flask import Blueprint, redirect, url_for, request, flash, render_template, abort, send_file, jsonify +from flask import Blueprint, redirect, url_for, request, flash, render_template, abort, send_file from flask_login import login_required, current_user from sqlalchemy import func from sqlalchemy.orm import joinedload @@ -12,7 +12,7 @@ from app.database.db_init import db # Import MongoDB transactions functions from app.database.mongodb_transactions import mongo_transaction -from app.database.mongodb_init import mongo1_db, mongo1_client +from app.database.mongodb_init import mongo1_client # Import admin_required decorator @@ -105,15 +105,18 @@ def open_user_profile(): form.discord_id.data = user.discord_id form.linked_in.data = user.linked_in + # Get the user's submited quests user_submited_quests = SubmitedQuest.query.filter(SubmitedQuest.quest_author_id == user_id).all() - user_solved_quests = SubmitedSolution.query.options( - joinedload(SubmitedSolution.coding_quest) - ).filter_by(user_id=user_id).all() + # Get the user's solved quests in descending order + user_solved_quests = SubmitedSolution.query.options(joinedload(SubmitedSolution.coding_quest)).filter_by(user_id=user_id).all() + # Get the user's achievements user_achievements = UserAchievement.query.filter(UserAchievement.user_id == user_id).all() + # Get the user's avatar avatar_base64 = base64.b64encode(user.avatar).decode('utf-8') if user.avatar else None + # Get the user's status and last logged date user_status = user.user_online_status last_logged_date = user.last_status_update - + # Get the xp points for the level rank with open('app/static/configs/levels.json', 'r') as file: levels_data = json.load(file) diff --git a/app/static/js/questsTable.js b/app/static/js/questsTable.js index 4e5606f..bbd21c2 100644 --- a/app/static/js/questsTable.js +++ b/app/static/js/questsTable.js @@ -32,7 +32,6 @@ $(function () { }); }); - // Table for quests $(function () { $(document).ready(function () { @@ -44,14 +43,18 @@ $(function () { // Table for user submited quests in the user profile $(function () { $(document).ready(function () { - $('#user_submited_quests').DataTable(); + $('#user_submited_quests').DataTable({ + "order": [[ 4, "desc" ]] + }); }); }); // Table for user solved quests $(function () { $(document).ready(function () { - $('#user_solved_quests').DataTable(); + $('#user_solved_quests').DataTable({ + "order": [[ 5, "desc" ]] + }); }); }); diff --git a/app/templates/user_profile.html b/app/templates/user_profile.html index 2e09ff5..ea8888f 100644 --- a/app/templates/user_profile.html +++ b/app/templates/user_profile.html @@ -336,7 +336,6 @@

My Submite alt="Failed" width="15" height="15"> {% endif %} - {% endfor %} From 11c04614ca3f3354aa1f7d3e3577b5dff3b4ea6e Mon Sep 17 00:00:00 2001 From: ragnarok dev-station Date: Thu, 17 Oct 2024 20:52:41 +0300 Subject: [PATCH 4/8] user profile avatar update --- app/models.py | 6 ++---- app/routes/user_routes.py | 5 ++++- app/templates/user_profile.html | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/models.py b/app/models.py index 36e2477..93f215c 100644 --- a/app/models.py +++ b/app/models.py @@ -10,7 +10,7 @@ from app.database.db_init import db script_dir = os.path.dirname(os.path.abspath(__file__)) -default_avatar_path = os.path.join(script_dir, 'static', 'images', 'anvil.png') + ########### Define the User model ########### class User(UserMixin, db.Model): @@ -62,9 +62,7 @@ def __init__(self, username, first_name, last_name, password, email, avatar=None self.last_name = last_name self.email = email self.password = password - self.date_registered = datetime.now() - with open(default_avatar_path, 'rb') as f: - self.avatar = base64.b64encode(f.read()) + self.date_registered = datetime.now() self.generate_user_id() # Generate random UserID diff --git a/app/routes/user_routes.py b/app/routes/user_routes.py index 70493a2..dbfccc0 100644 --- a/app/routes/user_routes.py +++ b/app/routes/user_routes.py @@ -112,7 +112,10 @@ def open_user_profile(): # Get the user's achievements user_achievements = UserAchievement.query.filter(UserAchievement.user_id == user_id).all() # Get the user's avatar - avatar_base64 = base64.b64encode(user.avatar).decode('utf-8') if user.avatar else None + if user.avatar: + avatar_base64 = base64.b64encode(user.avatar).decode('utf-8') + else: + avatar_base64 = None # Get the user's status and last logged date user_status = user.user_online_status last_logged_date = user.last_status_update diff --git a/app/templates/user_profile.html b/app/templates/user_profile.html index ea8888f..896b0f6 100644 --- a/app/templates/user_profile.html +++ b/app/templates/user_profile.html @@ -41,8 +41,8 @@