Skip to content

feat: start on in-house OIME system#490

Open
vEnhance wants to merge 41 commits into
mainfrom
claude/blissful-heisenberg-CGxyn
Open

feat: start on in-house OIME system#490
vEnhance wants to merge 41 commits into
mainfrom
claude/blissful-heisenberg-CGxyn

Conversation

@vEnhance

@vEnhance vEnhance commented Jun 7, 2026

Copy link
Copy Markdown
Owner

closes #487

claude added 5 commits June 7, 2026 04:32
Implements issue #487. New Django app with:
- OIMEProposal model (statement, answer, solution, subject, difficulty)
- OIMESolverRole model to track casual vs serious testers
- OIMEAttempt model for timed serious-solver sessions (5n+5 min per difficulty n)
- OIMEComment model for post-solve discussion threads
- CreateView/UpdateView for proposals (own proposals or staff-editable)
- Role selection page (casual = free browsing; serious = timed + locked until solved/gave up)
- Countdown timer via JS for in-progress serious attempts
- Comment thread gated to solvers who have completed or given up
- All views gated to Verified group (+ staff bypass)
- 23 unit tests covering permission gates, role selection, attempt flow, and comment access

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
Mirrors the existing verified_required decorator, which already allows
is_staff as an alternative to group membership. Removes the now-redundant
per-view override in oime/views.py.

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
Model names (OIMEProposal, OIMESolverRole, OIMEAttempt, OIMEComment) and
URL names are unchanged. OIME views/forms/admin are merged into the tubes
app. Tests split into tubes/tests.py (tube-specific) and tubes/tests_oime.py.
Pyright exclude pattern updated to cover tests_*.py files.

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
…ticipation

- Introduce OIMEContributor (OneToOne to User) as the identity for proposals,
  comments, and testsolving instead of direct User references
- Add OIMEYear model; testsolve attempts are now attached to a year
- Add OIMEParticipation for per-year serious/casual choice, with one-way
  downgrade (serious→casual allowed, reverse is not)
- Add setup/onboarding screen for first-time contributors (display_name + mode)
- Add upvotes ManyToMany on OIMEProposal (available after solving/casual view)
- Add archived Boolean on OIMEProposal to hide unused problems from the list
- Add comment editing (author or staff only)
- Recreate migration 0009 fresh rather than stacking on top
- Split OIME tests into tubes/test_oime.py; update pyright excludes accordingly

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
@vEnhance vEnhance changed the title start on in-house OIME system feat: start on in-house OIME system Jun 7, 2026
claude added 5 commits June 7, 2026 17:09
- Use generic_form component in oime_setup.html
- Add check_casual_answer view for stateless answer checking
- Casual users now see a "Check Your Answer" form and a "Reveal Solution"
  modal rather than having the solution immediately visible

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
- New proposal_fight view + template (proposal/<pk>/fight/) for timed serious solving;
  proposal_detail redirects there automatically when an attempt is in progress
- Casual answer checking is now client-side JS; remove check_casual_answer endpoint
- Status codes renamed: OIME_TBD / OIME_OK / OIME_FAIL / OIME_TLE / OIME_ALE
- Add ANSWER_LIMIT = 5 per attempt; hitting it sets status to OIME_ALE
- Proposal list badges and detail alerts updated for new statuses

https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
Comment thread tubes/views.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build our own OIME problem system

2 participants