From a32a8606fed5a58ac67349d7d143c67176163c8d Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 19 Jan 2026 17:10:50 +0800 Subject: [PATCH] add class username --- conf/urls/oj.py | 9 ++++++++- conf/views.py | 27 ++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/conf/urls/oj.py b/conf/urls/oj.py index a398c36..73a85cf 100644 --- a/conf/urls/oj.py +++ b/conf/urls/oj.py @@ -1,6 +1,12 @@ from django.urls import path -from ..views import HitokotoAPI, JudgeServerHeartbeatAPI, LanguagesAPI, WebsiteConfigAPI +from ..views import ( + HitokotoAPI, + JudgeServerHeartbeatAPI, + LanguagesAPI, + WebsiteConfigAPI, + ClassUsernamesAPI, +) urlpatterns = [ path("website", WebsiteConfigAPI.as_view()), @@ -8,4 +14,5 @@ urlpatterns = [ path("judge_server_heartbeat/", JudgeServerHeartbeatAPI.as_view()), path("languages", LanguagesAPI.as_view()), path("hitokoto", HitokotoAPI.as_view()), + path("class_usernames", ClassUsernamesAPI.as_view()), ] diff --git a/conf/views.py b/conf/views.py index d036000..42c63b2 100644 --- a/conf/views.py +++ b/conf/views.py @@ -121,10 +121,10 @@ class WebsiteConfigAPI(APIView): with XSSHtml() as parser: v = parser.clean(v) setattr(SysOptions, k, v) - + # 推送配置更新到所有连接的客户端 push_config_update(k, v) - + return self.success() @@ -316,10 +316,31 @@ class RandomUsernameAPI(APIView): class HitokotoAPI(APIView): def get(self, request): try: - categories = JsonDataLoader.load_data(settings.HITOKOTO_DIR, "categories.json") + categories = JsonDataLoader.load_data( + settings.HITOKOTO_DIR, "categories.json" + ) path = random.choice(categories).get("path") sentences = JsonDataLoader.load_data(settings.HITOKOTO_DIR, path) sentence = random.choice(sentences) return self.success(sentence) except Exception: return self.error("获取一言失败,请稍后再试") + + +class ClassUsernamesAPI(APIView): + def get(self, request): + classroom = request.GET.get("classroom", "") + if not classroom: + return self.error("需要班级号") + users = User.objects.filter(class_name=classroom).order_by("-create_time") + names = [] + for user in users: + prefix = f"ks{classroom}" + result = ( + user.username[len(prefix) :] + if user.username.startswith(prefix) + else user.username + ) + names.append(result) + + return self.success(names)