Source code for djangordf.admin.options
"""``RDFModelAdmin`` — declarative admin class for ``RDFModel`` classes.
Mirrors ``django.contrib.admin.ModelAdmin``'s declaration shape
without inheriting from it. Honours ``list_display``, ``fields``,
``readonly_fields``, and ``paginate_by``.
"""
from typing import Iterable, Optional, Sequence
from .forms import build_form_class
[docs]
class RDFModelAdmin:
"""Declarative configuration for an :class:`RDFModel` in the
:class:`RDFAdminSite` UI."""
list_display: Sequence[str] = ("iri",)
fields: Optional[Sequence[str]] = None
readonly_fields: Sequence[str] = ()
paginate_by: int = 50
def __init__(self, model_class, site):
self.model_class = model_class
self.site = site
# -- queryset / object lookup ------------------------------------------
[docs]
def get_queryset(self):
return self.model_class.objects.all()
[docs]
def get_object(self, iri):
return self.model_class.objects.get(iri)
# -- form generation ----------------------------------------------------
# -- presentation -------------------------------------------------------
[docs]
def render_list_cell(self, instance, column: str):
"""Stringify one cell of the list view."""
if column == "iri":
return str(instance.iri)
value = getattr(instance, column, None)
if value is None:
return ""
if isinstance(value, list):
return ", ".join(str(v) for v in value)
return str(value)
[docs]
def list_columns(self) -> Iterable[str]:
return tuple(self.list_display)