from django.contrib import admin from django.core.exceptions import ValidationError from .models import ( Character, MathBTIAssessment, MathBTIResult, MathIdentity, SkillPackage, Story, StoryChoice, StoryRun, StoryVersion, UserRelationship, ) from .services import validate_story_content @admin.register(StoryVersion) class StoryVersionAdmin(admin.ModelAdmin): list_display = ("story", "version", "is_published", "published_at", "created_at") list_filter = ("is_published", "story__kind") def save_model(self, request, obj, form, change): errors = validate_story_content(obj.content) if errors: raise ValidationError(errors) super().save_model(request, obj, form, change) @admin.register(StoryRun) class StoryRunAdmin(admin.ModelAdmin): list_display = ("id", "user", "story_version", "status", "current_node", "updated_at") list_filter = ("status", "story_version__story") readonly_fields = ("started_at", "updated_at", "completed_at") admin.site.register(MathIdentity) admin.site.register(MathBTIAssessment) admin.site.register(MathBTIResult) admin.site.register(Character) admin.site.register(Story) admin.site.register(StoryChoice) admin.site.register(UserRelationship) admin.site.register(SkillPackage)