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]