46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
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)
|