Replace counter-arguments with possible answers and unify search inputs.

Models, AI assistant, and UI now show diskussionsfertige Antworten without titles; shared search partial fixes aria-label rendering.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Pirmin Hinderling (fedora)
2026-07-07 22:50:53 +02:00
parent 28aab3b16a
commit 16428f2c16
19 changed files with 237 additions and 101 deletions
+17 -17
View File
@@ -4,12 +4,12 @@ from django.utils.html import format_html
from .admin_forms import (
ClaimAdminForm,
CounterArgumentInlineForm,
PossibleAnswerInlineForm,
EvidenceFileInlineForm,
SourceInlineForm,
)
from .admin_views import AssistantView, ReviewDraftView
from .models import Category, Claim, ClaimDraft, CounterArgument, EvidenceFile, Source, Tag
from .models import Category, Claim, ClaimDraft, PossibleAnswer, EvidenceFile, Source, Tag
class FaktenAdminMixin:
@@ -59,14 +59,14 @@ class SourceInline(FaktenAdminMixin, admin.StackedInline):
verbose_name_plural = 'Quellen'
class CounterArgumentInline(FaktenAdminMixin, admin.StackedInline):
model = CounterArgument
form = CounterArgumentInlineForm
class PossibleAnswerInline(FaktenAdminMixin, admin.StackedInline):
model = PossibleAnswer
form = PossibleAnswerInlineForm
extra = 1
fields = ('argument', 'response')
fields = ('answer',)
classes = ('collapse-open',)
verbose_name = 'Gegenargument'
verbose_name_plural = 'Gegenargumente'
verbose_name = 'Mögliche Antwort'
verbose_name_plural = 'Mögliche Antworten'
@admin.register(Tag)
@@ -115,7 +115,7 @@ class ClaimAdmin(FaktenAdminMixin, admin.ModelAdmin):
autocomplete_fields = ('category',)
save_on_top = True
date_hierarchy = 'updated_at'
inlines = [EvidenceFileInline, SourceInline, CounterArgumentInline]
inlines = [EvidenceFileInline, SourceInline, PossibleAnswerInline]
readonly_fields = ('public_link', 'created_at', 'updated_at')
fieldsets = (
('Einordnung', {
@@ -175,16 +175,16 @@ class SourceAdmin(FaktenAdminMixin, admin.ModelAdmin):
search_fields = ('title', 'organization', 'description')
@admin.register(CounterArgument)
class CounterArgumentAdmin(FaktenAdminMixin, admin.ModelAdmin):
form = CounterArgumentInlineForm
list_display = ('argument_preview', 'claim')
@admin.register(PossibleAnswer)
class PossibleAnswerAdmin(FaktenAdminMixin, admin.ModelAdmin):
form = PossibleAnswerInlineForm
list_display = ('answer_preview', 'claim')
list_filter = ('claim__category',)
search_fields = ('argument', 'response')
search_fields = ('answer', 'claim__title')
@admin.display(description='Gegenargument')
def argument_preview(self, obj):
return obj.argument[:80]
@admin.display(description='Antwort')
def answer_preview(self, obj):
return obj.answer[:80]
@admin.register(ClaimDraft)