membersystem/src/utils/view_utils.py

35 lines
935 B
Python

from django.contrib.sites.shortcuts import get_current_site as django_get_current_site
from django.db.models import Model
from django.http import HttpRequest
from django.http import HttpResponse
from zen_queries import render
def base_view_context(request):
"""Include the current site in the context."""
return {"site": django_get_current_site(request)}
def render_list(
request: HttpRequest,
objects: list["Model"],
columns: list[tuple[str, str]],
) -> HttpResponse:
# TODO: Actions per object
# TODO: Listwide actions
object_rows = [[getattr(obj, column[0]) for column in columns] for obj in objects]
column_labels = [column[1] for column in columns]
context = base_view_context(request) | {
"object_rows": object_rows,
"columns": column_labels,
}
return render(
request=request,
template_name="utils/list.html",
context=context,
)