From e40d3ef616dd6c77574da8e18b8c037a68fb4245 Mon Sep 17 00:00:00 2001
From: LpCote <73721863+LpCote4@users.noreply.github.com>
Date: Tue, 19 Nov 2024 15:55:44 -0500
Subject: [PATCH] fix: potential score not frozen on scoreboard freeze

---
 CTFd/api/v1/scoreboard.py                  | 6 ++++++
 CTFd/scoreboard.py                         | 2 +-
 CTFd/teams.py                              | 4 ++--
 CTFd/themes/core-beta/static/manifest.json | 9 +++++++++
 CTFd/users.py                              | 4 ++--
 5 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/CTFd/api/v1/scoreboard.py b/CTFd/api/v1/scoreboard.py
index bcb51937..f9a67f8a 100644
--- a/CTFd/api/v1/scoreboard.py
+++ b/CTFd/api/v1/scoreboard.py
@@ -73,9 +73,15 @@ class ScoreboardList(Resource):
         
 
         for i, x in enumerate(standings):
+            
             potentialScore = 0
             team_ids = [x.account_id for team in standings]
             fails = Fails.query.filter(Fails.account_id.in_(team_ids))
+
+            freeze = get_config("freeze")
+            if freeze:
+                fails = fails.filter(Fails.date < unix_time_to_utc(freeze))
+
             for fail in fails:
                 challenge = Challenges.query.filter_by(id=fail.challenge_id).first_or_404()
                 if challenge.type == "manual" or challenge.type == "manualRecursive" or challenge.type == "flash":
diff --git a/CTFd/scoreboard.py b/CTFd/scoreboard.py
index 854b84f8..5591c2e5 100644
--- a/CTFd/scoreboard.py
+++ b/CTFd/scoreboard.py
@@ -20,7 +20,7 @@ def listing():
     infos = get_infos()
 
     if config.is_scoreboard_frozen():
-        infos.append("Le classement a été gelé")
+        infos.append("Le classement a été gelé! Vous pouvez encore soumettre des défis, le classement sera mis à jour à la fin de l'évènement.")
 
     if is_admin() is True and scores_visible() is False:
         infos.append("Les scores ne sont pas actuellement visibles pour les utilisateurs")
diff --git a/CTFd/teams.py b/CTFd/teams.py
index 953281ac..4a1f6bf6 100644
--- a/CTFd/teams.py
+++ b/CTFd/teams.py
@@ -390,7 +390,7 @@ def private():
     score = team.get_score(admin=True)
 
     if config.is_scoreboard_frozen():
-        infos.append("Le classement a été gelé")
+        infos.append("Le classement a été gelé! Vous pouvez encore soumettre des défis, le classement sera mis à jour à la fin de l'évènement.")
     
     return render_template(
         "teams/private.html",
@@ -443,7 +443,7 @@ def public(team_id):
         return render_template("teams/public.html", team=team, errors=errors)
 
     if config.is_scoreboard_frozen():
-        infos.append("Le classement a été gelé")
+        infos.append("Le classement a été gelé! Vous pouvez encore soumettre des défis, le classement sera mis à jour à la fin de l'évènement.")
 
     return render_template(
         "teams/public.html",
diff --git a/CTFd/themes/core-beta/static/manifest.json b/CTFd/themes/core-beta/static/manifest.json
index 587bd710..64d72ea0 100644
--- a/CTFd/themes/core-beta/static/manifest.json
+++ b/CTFd/themes/core-beta/static/manifest.json
@@ -189,5 +189,14 @@
       "assets/js/index.js",
       "_index.84adcd49.js"
     ]
+  },
+  "_CommentBox.2a5596be.js": {
+    "file": "assets/CommentBox.2a5596be.js",
+    "imports": [
+      "assets/js/index.js"
+    ],
+    "css": [
+      "assets/CommentBox.533f8693.css"
+    ]
   }
 }
\ No newline at end of file
diff --git a/CTFd/users.py b/CTFd/users.py
index 7ff43024..ad724b98 100644
--- a/CTFd/users.py
+++ b/CTFd/users.py
@@ -55,7 +55,7 @@ def private():
     user = get_current_user()
 
     if config.is_scoreboard_frozen():
-        infos.append("Le classement a été gelé")
+        infos.append("Le classement a été gelé! Vous pouvez encore soumettre des défis, le classement sera mis à jour à la fin de l'évènement.")
 
     return render_template(
         "users/private.html",
@@ -75,7 +75,7 @@ def public(user_id):
     user = Users.query.filter_by(id=user_id, banned=False, hidden=False).first_or_404()
 
     if config.is_scoreboard_frozen():
-        infos.append("Le classement a été gelé")
+        infos.append("Le classement a été gelé! Vous pouvez encore soumettre des défis, le classement sera mis à jour à la fin de l'évènement.")
 
     return render_template(
         "users/public.html", user=user, account=user.account, infos=infos, errors=errors
-- 
GitLab