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, )