"""
Admin for the workspace tree — support and inspection, not an editor.

Read-mostly on purpose: a page's `settings` is an opaque blob the client owns,
and a hand-edited one is a page that renders wrong with nothing on screen
saying why.
"""

from django.contrib import admin

from .models import Page, Space


class PageInline(admin.TabularInline):
    model = Page
    extra = 0
    fields = ('name', 'type_id', 'position', 'favorite', 'locked')
    show_change_link = True


@admin.register(Space)
class SpaceAdmin(admin.ModelAdmin):
    list_display = ('name', 'user', 'is_default', 'favorite', 'position')
    list_filter = ('is_default', 'favorite')
    search_fields = ('name', 'user__email')
    inlines = [PageInline]


@admin.register(Page)
class PageAdmin(admin.ModelAdmin):
    list_display = ('name', 'type_id', 'space', 'position', 'favorite', 'locked')
    list_filter = ('type_id', 'favorite', 'locked')
    search_fields = ('name', 'space__name', 'space__user__email')
    readonly_fields = ('settings',)
