187 lines
5.3 KiB
Python
187 lines
5.3 KiB
Python
|
|
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
|