feat: start on in-house OIME system#490
Open
vEnhance wants to merge 41 commits into
Open
Conversation
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
- 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
vEnhance
commented
Jun 7, 2026
- Add OIMEProposal.label property returning subject+pk (e.g. "A5", "C12") - Use label in page titles, headings, and list table ID column - Fix typo: enrol -> enroll in oime_setup docstring https://claude.ai/code/session_01Wh3P2SXwtcSSN3Udiugx26
there's a global render for that already
the AI-generated user text makes me wince
less confusing i think
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #487