from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from django.contrib import admin from django.utils.html import format_html from django.urls import reverse from django.utils.http import urlencode from .models import User, Language, Text, ReportComment, ReportAdoptionNotice, Log, Timestamp from .models import Animal, Species, RescueOrganization, AdoptionNotice, Location, Rule, Image, ModerationAction, \ Comment, Report, Announcement, AdoptionNoticeStatus, User, Subscriptions from django.utils.translation import gettext_lazy as _ class StatusInline(admin.StackedInline): model = AdoptionNoticeStatus @admin.register(AdoptionNotice) class AdoptionNoticeAdmin(admin.ModelAdmin): search_fields = ("name__icontains", "description__icontains") list_filter = ("owner",) inlines = [ StatusInline, ] # Re-register UserAdmin @admin.register(User) class UserAdmin(admin.ModelAdmin): search_fields = ("usernamname__icontains", "first_name__icontains", "last_name__icontains", "email__icontains") list_display = ("username", "email", "trust_level", "is_active", "view_adoption_notices") list_filter = ("is_active", "trust_level",) def view_adoption_notices(self, obj): count = obj.adoption_notices.count() url = ( reverse("admin:fellchensammlung_adoptionnotice_changelist") + "?" + urlencode({"owner__id": f"{obj.id}"}) ) return format_html('{} Adoption Notices', url, count) def _reported_content_link(obj): reported_content = obj.reported_content return format_html(f'{reported_content}') @admin.register(ReportComment) class ReportCommentAdmin(admin.ModelAdmin): list_display = ["user_comment", "reported_content_link"] date_hierarchy = "created_at" def reported_content_link(self, obj): return _reported_content_link(obj) reported_content_link.short_description = "Reported Content" @admin.register(ReportAdoptionNotice) class ReportAdoptionNoticeAdmin(admin.ModelAdmin): list_display = ["user_comment", "reported_content_link"] date_hierarchy = "created_at" def reported_content_link(self, obj): return _reported_content_link(obj) reported_content_link.short_description = "Reported Content" @admin.register(RescueOrganization) class RescueOrganizationAdmin(admin.ModelAdmin): search_fields = ("name__icontains",) list_display = ("name", "trusted", "allows_using_materials", "website") list_filter = ("allows_using_materials", "trusted",) @admin.register(Text) class TextAdmin(admin.ModelAdmin): search_fields = ("title__icontains", "text_code__icontains",) @admin.register(Comment) class CommentAdmin(admin.ModelAdmin): list_filter = ("user",) admin.site.register(Animal) admin.site.register(Species) admin.site.register(Location) admin.site.register(Rule) admin.site.register(Image) admin.site.register(ModerationAction) admin.site.register(Language) admin.site.register(Announcement) admin.site.register(AdoptionNoticeStatus) admin.site.register(Subscriptions) admin.site.register(Log) admin.site.register(Timestamp)