Artifex/control_plane/authoring/admin.py

187 lines
5.3 KiB
Python
Raw Normal View History

from __future__ import annotations
from django.contrib import admin
from control_plane.authoring.models import (
BookRun,
BookStateVersion,
SceneContextCitation,
SceneIdeation,
Series,
SourceDocument,
SourceDocumentVersion,
SourcePassage,
StandaloneScene,
Work,
)
@admin.register(Series)
class SeriesAdmin(admin.ModelAdmin):
list_display = ("title", "slug", "updated_at")
search_fields = ("title", "slug")
@admin.register(Work)
class WorkAdmin(admin.ModelAdmin):
list_display = (
"title",
"series",
"work_type",
"sequence",
"current_book_state",
"updated_at",
)
list_filter = ("work_type", "series")
search_fields = ("title", "slug", "series__title")
class SourceDocumentVersionInline(admin.TabularInline):
model = SourceDocumentVersion
fields = ("version", "authority", "source_path", "source_sha256", "created_at")
readonly_fields = fields
extra = 0
show_change_link = True
@admin.register(SourceDocument)
class SourceDocumentAdmin(admin.ModelAdmin):
list_display = ("title", "work", "document_type", "logical_key", "updated_at")
list_filter = ("document_type", "work__series", "work")
search_fields = ("title", "logical_key", "work__title")
inlines = (SourceDocumentVersionInline,)
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(SourceDocumentVersion)
class SourceDocumentVersionAdmin(admin.ModelAdmin):
list_display = ("document", "version", "authority", "byte_size", "created_at")
list_filter = ("authority", "document__document_type", "document__work")
search_fields = ("document__title", "document__logical_key", "source_path", "source_sha256")
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(SourcePassage)
class SourcePassageAdmin(admin.ModelAdmin):
list_display = ("document_version", "ordinal", "start_line", "end_line", "sha256")
search_fields = ("content", "document_version__document__logical_key")
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
class SceneContextCitationInline(admin.TabularInline):
model = SceneContextCitation
fields = ("rank", "passage", "score", "reason")
readonly_fields = fields
extra = 0
@admin.register(StandaloneScene)
class StandaloneSceneAdmin(admin.ModelAdmin):
list_display = (
"title",
"work",
"book_state",
"book_chapter_key",
"revision",
"status",
"target_words",
"word_count",
"updated_at",
)
list_filter = ("status", "work__series", "work")
search_fields = ("title", "scene_key", "brief", "prose")
inlines = (SceneContextCitationInline,)
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(SceneIdeation)
class SceneIdeationAdmin(admin.ModelAdmin):
list_display = (
"work",
"book_state",
"target_book",
"candidate_count",
"context_pack_sha256",
"created_at",
)
list_filter = ("work__series", "work")
search_fields = ("target_book", "focus", "work__title")
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(BookStateVersion)
class BookStateVersionAdmin(admin.ModelAdmin):
list_display = ("work", "version", "status", "sha256", "created_at")
list_filter = ("status", "work__series", "work")
search_fields = ("work__title", "sha256", "approved_by")
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(BookRun)
class BookRunAdmin(admin.ModelAdmin):
list_display = (
"book_state",
"status",
"current_chapter_key",
"started_at",
"finished_at",
"updated_at",
)
list_filter = ("status", "book_state__work")
search_fields = ("book_state__work__title", "current_chapter_key", "failure_reason")
def get_readonly_fields(self, request, obj=None):
return tuple(field.name for field in self.model._meta.fields)
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False