85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
from django.contrib import admin
|
|
|
|
from .models import Category, Claim, CounterArgument, EvidenceFile, Source, Tag
|
|
|
|
|
|
class EvidenceFileInline(admin.TabularInline):
|
|
model = EvidenceFile
|
|
extra = 1
|
|
fields = ('title', 'file', 'caption', 'order')
|
|
|
|
|
|
class SourceInline(admin.TabularInline):
|
|
model = Source
|
|
extra = 1
|
|
|
|
|
|
class CounterArgumentInline(admin.StackedInline):
|
|
model = CounterArgument
|
|
extra = 1
|
|
|
|
|
|
@admin.register(Tag)
|
|
class TagAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'slug')
|
|
prepopulated_fields = {'slug': ('name',)}
|
|
search_fields = ('name',)
|
|
|
|
|
|
@admin.register(Category)
|
|
class CategoryAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'slug', 'claim_count', 'created_at')
|
|
prepopulated_fields = {'slug': ('name',)}
|
|
search_fields = ('name', 'description')
|
|
|
|
@admin.display(description='Anzahl Behauptungen')
|
|
def claim_count(self, obj):
|
|
return obj.claims.count()
|
|
|
|
|
|
@admin.register(Claim)
|
|
class ClaimAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'category', 'status', 'evidence_level', 'updated_at')
|
|
list_filter = ('category', 'status', 'evidence_level', 'tags')
|
|
search_fields = ('title', 'short_answer', 'detailed_explanation')
|
|
prepopulated_fields = {'slug': ('title',)}
|
|
filter_horizontal = ('tags',)
|
|
inlines = [EvidenceFileInline, SourceInline, CounterArgumentInline]
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': ('category', 'title', 'slug', 'status', 'evidence_level', 'tags'),
|
|
}),
|
|
('Inhalt', {
|
|
'fields': ('short_answer', 'detailed_explanation'),
|
|
}),
|
|
)
|
|
|
|
|
|
@admin.register(EvidenceFile)
|
|
class EvidenceFileAdmin(admin.ModelAdmin):
|
|
list_display = ('display_title', 'claim', 'file_extension_display', 'order', 'created_at')
|
|
list_filter = ('claim__category',)
|
|
search_fields = ('title', 'caption', 'claim__title')
|
|
|
|
@admin.display(description='Typ')
|
|
def file_extension_display(self, obj):
|
|
return obj.file_extension.upper()
|
|
|
|
|
|
@admin.register(Source)
|
|
class SourceAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'organization', 'claim')
|
|
list_filter = ('claim__category',)
|
|
search_fields = ('title', 'organization', 'description')
|
|
|
|
|
|
@admin.register(CounterArgument)
|
|
class CounterArgumentAdmin(admin.ModelAdmin):
|
|
list_display = ('argument_preview', 'claim')
|
|
list_filter = ('claim__category',)
|
|
search_fields = ('argument', 'response')
|
|
|
|
@admin.display(description='Gegenargument')
|
|
def argument_preview(self, obj):
|
|
return obj.argument[:80]
|