Repository URL to install this package:
|
Version:
0.2.0a1 ▾
|
from building_blocks.admin import SluggedKaosModelAdmin, ArchivableMixinAdmin, KaosModelAdmin
from building_blocks.consts.field_names import *
from dj_kaos_utils.admin.utils import render_admin_link, render_anchor
from django.contrib import admin
from .models import *
class FormFieldInline(
admin.StackedInline
):
slug_source = 'name'
model = FormField
extra = 0
ordering = ('order',)
prepopulated_fields = {'slug': ('name',)}
fields = (
'order',
(NAME, SLUG,),
TYPE,
('choices', 'choices_endpoint')
)
@admin.register(Form)
class FormAdmin(
SluggedKaosModelAdmin
):
inlines = (FormFieldInline,)
@admin.register(ClipperEndpoint)
class ClipperEndpointAdmin(
ArchivableMixinAdmin,
SluggedKaosModelAdmin
):
list_display = (NAME, SLUG, *ArchivableMixinAdmin.list_display)
readonly_fields = (
*SluggedKaosModelAdmin.readonly_fields,
*ArchivableMixinAdmin.readonly_fields,
)
autocomplete_fields = ('form',)
fieldsets = (
(None, {'fields': (NAME, 'webclips_endpoint', 'form')}),
*SluggedKaosModelAdmin.fieldsets[1:],
)
@admin.register(WebClip)
class WebClipAdmin(
KaosModelAdmin
):
list_display = ('__str__', 'page_url_display', 'created')
readonly_fields = (
*KaosModelAdmin.readonly_fields,
'processed_item_display',
'page_url_display',
)
fieldsets = (
(None, {'fields': (
'page_title',
'page_url',
'html_content',
)}),
("Notes and Form", {'fields': ('clipper_notes', 'form_data'), 'classes': ('collapse', 'collapsed')}),
("Processing", {'fields': ('processed_item_display',)}),
*KaosModelAdmin.fieldsets[1:],
)
@admin.display(description="processed item")
def processed_item_display(self, obj: WebClip):
if obj and obj.processed_item:
return render_admin_link(obj.processed_item)
@admin.display(description="page url")
def page_url_display(self, obj: WebClip):
if obj:
return render_anchor(obj.page_url)