2263 Commits

Author SHA1 Message Date
c1ec9eab8f update 2026-06-14 09:43:33 -06:00
124a1d84d3 update 2026-06-14 09:42:25 -06:00
9949ebf1c5 fix 2026-06-14 09:27:21 -06:00
90d1a2aa30 fix 2026-06-14 09:19:01 -06:00
dab6734d03 switch docker image 2026-06-14 09:13:05 -06:00
fa6736b855 docs: design Debian slim backend image 2026-06-14 09:08:36 -06:00
322acc543f build: install clang-extra-tools for clang-format in backend image
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 08:07:50 -06:00
7974d12475 build: move ruff from dev to main dependencies (needed at runtime for code formatting)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 08:05:12 -06:00
f7fbfdba7d fix(submission): revert unnecessary CSRF exemption on FormatCodeAPI
The CSRF 403 error was expected Django behavior (no CSRF cookie in curl).
FormatCodeAPI should follow SubmissionAPI's pattern (APIView, not CSRF-exempt).
Verified with GET request: /api/format_code returns 405 (correct route resolution).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 08:02:06 -06:00
5cc5c64625 feat(submission): register /api/format_code route and fix CSRF exemption
Task 4: Register the FormatCodeAPI view to the /api/format_code endpoint.

Also fix: Make FormatCodeAPI extend CSRFExemptAPIView instead of APIView
so that the manual verification curl commands receive JSON responses
(login-required error) instead of HTML 403 Forbidden responses. This is
necessary for the view to work with the @login_required decorator which
expects to return JSON errors, not be blocked by CSRF middleware.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 07:57:24 -06:00
be1610faa6 feat(submission): add FormatCodeAPI view 2026-06-14 07:51:41 -06:00
bfeb69434e feat(submission): add FormatCodeSerializer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 07:48:58 -06:00
4cd37cef78 feat(submission): add ruff/clang-format code formatting helper 2026-06-14 07:46:41 -06:00
69eb15ac27 Add implementation plan for pre-submit code auto-formatting
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 07:43:51 -06:00
1bbc149e55 Add design spec for pre-submit code auto-formatting
Plan: ruff for Python3, clang-format (LLVM/4-space/Attach) for C/C++,
called via new /api/format_code endpoint before submission.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 07:41:03 -06:00
95949e565c update 2026-06-09 05:04:43 -06:00
69bd6af6ec update 2026-06-05 09:58:52 -06:00
d7e04adf07 fix 2026-06-05 09:46:49 -06:00
2b65acf91a update 2026-06-05 08:51:57 -06:00
84e972b174 update 2026-06-05 00:58:51 -06:00
6a7be0e97a fix 2026-06-04 23:59:20 -06:00
513743c767 update 2026-06-04 08:44:58 -06:00
6a870875ee add ai report 2026-06-04 08:06:31 -06:00
3d5ace65f2 feat: register ai admin URL routes 2026-06-04 07:31:14 -06:00
baed3b80f1 feat: add AIAnalysisAdminAPI for listing and reading reports 2026-06-04 07:27:24 -06:00
39f1e8b35e fix: use utils.api serializers import instead of rest_framework directly 2026-06-04 07:26:08 -06:00
f8cbcf28c1 feat: add AIAnalysis serializers for admin list/detail 2026-06-04 07:25:45 -06:00
b28301bbb1 fix 2026-06-04 05:31:23 -06:00
f6e41dc349 fix 2026-06-04 04:48:25 -06:00
745ddb56f9 fix 2026-06-03 07:38:07 -06:00
734f596e1a update 2026-06-03 07:29:03 -06:00
0764946c17 add wc 2026-06-03 07:19:57 -06:00
809673e64f fix 2026-06-03 04:50:46 -06:00
59dbb6868f update 2026-06-03 00:01:29 -06:00
d1fdbcf52b fix 2026-06-02 23:13:06 -06:00
385d04505b feat: open teaching analytics to Teacher Admin
StuckProblems, TopACTrend, AI user analysis, and problemset user
progress are now accessible to Teacher Admin (previously super-only).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 18:17:26 -06:00
f94d29cf93 feat: add Teacher Admin role to four-tier permission system
Introduces a four-tier role system: Regular User → Student Admin →
Teacher Admin → Super Admin. Teacher Admin can manage own contests,
problemsets, and view classroom data. Student Admin (renamed from Admin)
retains problem management only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 18:13:33 -06:00
125d57b123 update 2026-06-02 10:48:24 -06:00
fd7384980a update 2026-05-28 19:13:14 -06:00
6ab2886f77 remove contest type 2026-05-26 23:10:27 -06:00
6b81856bfd refactor: replace sync_to_async aggregate with aaggregate in problemset views 2026-05-26 21:48:30 -06:00
48a16d91b5 refactor: replace sync_to_async aggregate with aaggregate in problem views 2026-05-26 21:46:56 -06:00
b041de8c4a refactor: replace sync_to_async aggregate with aaggregate in CommentStatisticsAPI 2026-05-26 21:44:56 -06:00
e47923758e refactor: replace sync_to_async queryset slice with async for comprehension 2026-05-26 21:42:43 -06:00
c49a6af066 refactor: replace sync_to_async cache wrappers with native cache.aget/aset/adelete 2026-05-26 21:25:48 -06:00
57c0572fd9 async 2026-05-26 21:25:26 -06:00
8731012f47 use asgi 2026-05-26 07:37:05 -06:00
759593a224 fix 2026-05-26 07:08:23 -06:00
1217ee3eaf update 2026-05-26 02:19:26 -06:00
bf2a95ef01 update 2026-05-25 23:55:19 -06:00