Source code for coalition.regions.admin

from typing import TYPE_CHECKING

from django.contrib import admin

from .models import Region

if TYPE_CHECKING:
    from django.db.models import QuerySet
    from django.http import HttpRequest


@admin.register(Region)
[docs] class RegionAdmin(admin.ModelAdmin): """Admin interface for Region model"""
[docs] list_display = ( "name", "label", "abbrev", "type", "geoid", "parent", "has_geometry", )
[docs] list_filter = ("type", "parent")
[docs] search_fields = ("name", "label", "abbrev", "geoid")
[docs] readonly_fields = ("geoid", "coords", "geom", "geojson")
[docs] fieldsets = ( ( "Basic Information", {"fields": ("name", "label", "abbrev", "type", "geoid", "parent")}, ), ( "Geographic Data", { "fields": ("coords", "geom", "geojson"), "classes": ("collapse",), "description": "Geographic coordinates and geometry data", }, ), )
[docs] def has_geometry(self, obj: Region) -> bool: """Display whether the region has geometric data""" return bool(obj.geom or obj.coords)
has_geometry.boolean = True has_geometry.short_description = "Has Geometry"
[docs] def get_queryset(self, request: "HttpRequest") -> "QuerySet[Region]": """Order by type and then name""" return super().get_queryset(request).order_by("type", "name")