Referee display: drop the redundant "External" pill from the PDF form, round the event/dashboard "due" summary to 2 decimals (a fine-grained km rate like 0.083 was pushing the raw total to 3+ decimals), and theme the PDF's accent colors off the club's own primary/secondary colors instead of a hardcoded default. News: title/body stay the club's own-language (Dutch) text; new optional title_en/body_en carry a translation, with News.effective_title_en/ effective_body_en resolving the fallback to the original on read rather than copying it in at save time -- so editing the Dutch text later never leaves a stale English copy behind, and existing rows get correct fallback behaviour with no backfill. The news form lays both languages out side by side; the detail page only shows an English section when one was actually added. The public API returns both languages in one call (title_nl/body_nl/excerpt_nl alongside title_en/body_en/excerpt_en, the latter never blank) -- a breaking rename of the previously-unprefixed title/body/excerpt fields. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
601 B
Python
24 lines
601 B
Python
from django.contrib import admin
|
|
|
|
from .models import News, NewsPhoto
|
|
|
|
|
|
class NewsPhotoInline(admin.TabularInline):
|
|
model = NewsPhoto
|
|
extra = 0
|
|
|
|
|
|
@admin.register(News)
|
|
class NewsAdmin(admin.ModelAdmin):
|
|
list_display = ["title", "club", "status", "visibility", "created_by"]
|
|
list_filter = ["club", "status", "visibility"]
|
|
search_fields = ["title", "title_en"]
|
|
raw_id_fields = ["created_by"]
|
|
inlines = [NewsPhotoInline]
|
|
|
|
|
|
@admin.register(NewsPhoto)
|
|
class NewsPhotoAdmin(admin.ModelAdmin):
|
|
list_display = ["news_item", "is_main", "ordering"]
|
|
list_filter = ["is_main"]
|