Source code for feder.institutions.admin

from django.contrib import admin
from django.db.models import Count
from django.utils.translation import gettext_lazy as _
from reversion.admin import VersionAdmin

from .models import Institution, Tag


[docs] @admin.register(Institution) class InstitutionAdmin(VersionAdmin): """ Admin View for Institution """ list_display = ( "id", "name", "archival", "jst", "get_teryt", "email", "regon", "get_tags", ) search_fields = ["name", "tags__name", "jst__name", "jst__id", "email", "regon"] list_filter = ("archival", "tags") raw_id_fields = ("jst",) actions = ["mark_archival", "mark_non_archival"] @admin.display(description=_("Institution tags")) def get_tags(self, obj): return ", ".join(obj.tags.values_list("name", flat=True)) @admin.display(description=_("Teryt code")) def get_teryt(self, obj): return obj.jst.id @admin.action(description=_("Mark selected institution as archival")) def mark_archival(self, request, queryset): queryset.update( archival=True, ) for obj in queryset: self.log_change(request, obj, _("Mark selected institution as archival")) @admin.action(description=_("Mark selected institution as NON archival")) def mark_non_archival(self, request, queryset): queryset.update( archival=False, ) for obj in queryset: self.log_change( request, obj, _("Mark selected institution as NON archival") )
[docs] def get_actions(self, request): actions = super().get_actions(request) if "delete_selected" in actions: del actions["delete_selected"] return actions
[docs] @admin.register(Tag) class TagAdmin(admin.ModelAdmin): list_display = ("name", "get_institution_count") search_fields = ["name"] actions = None @admin.display( description=_("Institution count"), ordering="institution_count", ) def get_institution_count(self, obj): return obj.institution_count
[docs] def get_queryset(self, *args, **kwargs): qs = super().get_queryset(*args, **kwargs) return qs.annotate(institution_count=Count("institution"))