Moderation Overview
The moderation system is implemented inclassquiz/routers/moderation.py and provides:
- Review queue for unrated public quizzes
- Rating system for content quality
- Moderator authentication and permissions
- Pagination for large review queues
Becoming a Moderator
Moderators are users with special permissions. The authentication check is handled byget_current_moderator from classquiz.auth.
Moderator permissions are typically granted by system administrators. Contact your instance admin to request moderator access.
Moderator Dashboard
Check Moderator Status
Endpoint:GET /api/v1/moderation/status
Authentication: Moderator required
moderator=yes cookie for web interface access.
Review Queue
Get Quizzes to Review
Endpoint:GET /api/v1/moderation/quizzes
Authentication: Moderator required
Parameters:
page(int): Page number (starts at 1)all(bool): If true, show all public quizzes; if false, only unrated quizzes
Pagination
Implementation fromclassquiz/routers/moderation.py:24-46:
updated_at in descending order, showing recently updated quizzes first.
Rating Quizzes
Set Moderation Rating
Endpoint:POST /api/v1/moderation/rating/set/{quiz_id}
Authentication: Moderator required
Path Parameters:
quiz_id(UUID): The quiz to rate
Rating System
Themod_rating field is a SmallInteger (see classquiz/db/models.py:201):
Rating Scale
While the system supports any integer value, consider this recommended scale:- 5 - Excellent
- 4 - Good
- 3 - Acceptable
- 2 - Poor
- 1 - Unacceptable
- High-quality content
- Educational value
- No issues with accuracy or appropriateness
- Well-formatted questions
- Good images and design
Your ClassQuiz instance may use a different rating scale. Consult your moderation guidelines.
Moderation Workflow
Access the review queue
Call
GET /api/v1/moderation/quizzes?page=1&all=false to get unrated public quizzes.Review quiz content
For each quiz, review:
- Question quality and accuracy
- Appropriateness of content
- Image quality and relevance
- Overall educational value
- Signs of spam or abuse
Assign rating
Use
POST /api/v1/moderation/rating/set/{quiz_id} to assign a rating (1-5) or null to skip.Content Guidelines
When moderating quizzes, watch for:✅ Good Content
- Accurate information
- Clear, well-written questions
- Appropriate for educational use
- Proper attribution for images
- Reasonable time limits
- Varied question types
❌ Problematic Content
- Spam or promotional content
- Offensive or inappropriate material
- Plagiarized questions
- Copyright-infringing images
- Misleading or incorrect information
- Personal information or doxxing
Imported Kahoot Quizzes
Quizzes imported from Kahoot are marked in the database:- Have
imported_from_kahoot: truein the response - Store original Kahoot ID in
kahoot_idfield - Start with
mod_rating: nullafter import - Require manual moderation review
Error Handling
Quiz Not Found
Invalid Page Number
Unauthorized
HTTP 401/403 - User doesn’t have moderator permissions.Database Schema
Moderation-related fields in the Quiz model:Filtering and Search
The moderation endpoints filter quizzes by: Public only:all=false):
- Only public quizzes (private quizzes aren’t moderated)
- Recently updated quizzes first
- Unrated quizzes by default
Integration with Search
Moderation ratings can be used to filter search results:- Minimum rating thresholds for public search
- Sorting by rating in browse pages
- Filtering low-rated content from recommendations
Best Practices
For Moderators
Be consistent
Use the same rating criteria for all quizzes. Document your guidelines and follow them.
For Instance Administrators
- Clear guidelines: Publish moderation standards for your instance
- Multiple moderators: Distribute workload among trusted users
- Appeals process: Allow quiz creators to appeal ratings
- Automation: Consider auto-hiding quizzes with rating < 2
- Metrics: Track moderation velocity and rating distribution
API Implementation
The moderation system is a lightweight API with three endpoints:- Status check (
/status): Verify moderator permissions - Review queue (
/quizzes): Get quizzes to review with pagination - Set rating (
/rating/set/{quiz_id}): Assign or remove ratings
get_current_moderator dependency.
See complete implementation in classquiz/routers/moderation.py:1-62.
Future Enhancements
Potential moderation features (not yet implemented):- Moderation history log
- Multi-moderator consensus
- Automated spam detection
- Report system for users
- Moderator performance metrics
- Bulk rating operations
- Custom rating categories (accuracy, design, educational value)