The 'history' admin view for this model.
(self, request, object_id, extra_context=None)
| 2552 | return self.render_delete_form(request, context) |
| 2553 | |
| 2554 | def history_view(self, request, object_id, extra_context=None): |
| 2555 | "The 'history' admin view for this model." |
| 2556 | from django.contrib.admin.models import LogEntry |
| 2557 | from django.contrib.admin.views.main import PAGE_VAR |
| 2558 | |
| 2559 | # First check if the user can see this history. |
| 2560 | model = self.model |
| 2561 | obj = self.get_object(request, unquote(object_id)) |
| 2562 | if obj is None: |
| 2563 | return self._get_obj_does_not_exist_redirect( |
| 2564 | request, model._meta, object_id |
| 2565 | ) |
| 2566 | |
| 2567 | if not self.has_view_or_change_permission(request, obj): |
| 2568 | raise PermissionDenied |
| 2569 | |
| 2570 | # Then get the history for this object. |
| 2571 | app_label = self.opts.app_label |
| 2572 | action_list = ( |
| 2573 | LogEntry.objects.filter( |
| 2574 | object_id=unquote(object_id), |
| 2575 | content_type=get_content_type_for_model(model), |
| 2576 | ) |
| 2577 | .select_related("user", "content_type") |
| 2578 | .order_by("action_time") |
| 2579 | ) |
| 2580 | |
| 2581 | paginator = self.get_paginator(request, action_list, 100) |
| 2582 | page_number = request.GET.get(PAGE_VAR, 1) |
| 2583 | page_obj = paginator.get_page(page_number) |
| 2584 | page_range = paginator.get_elided_page_range(page_obj.number) |
| 2585 | |
| 2586 | context = { |
| 2587 | **self.admin_site.each_context(request), |
| 2588 | "title": _("Change history: %s") |
| 2589 | % display_for_value(str(obj), EMPTY_VALUE_STRING), |
| 2590 | "subtitle": None, |
| 2591 | "action_list": page_obj, |
| 2592 | "page_range": page_range, |
| 2593 | "page_var": PAGE_VAR, |
| 2594 | "pagination_required": paginator.count > 100, |
| 2595 | "module_name": str(capfirst(self.opts.verbose_name_plural)), |
| 2596 | "object": obj, |
| 2597 | "opts": self.opts, |
| 2598 | "preserved_filters": self.get_preserved_filters(request), |
| 2599 | **(extra_context or {}), |
| 2600 | } |
| 2601 | |
| 2602 | request.current_app = self.admin_site.name |
| 2603 | |
| 2604 | return TemplateResponse( |
| 2605 | request, |
| 2606 | self.object_history_template |
| 2607 | or [ |
| 2608 | "admin/%s/%s/object_history.html" % (app_label, self.opts.model_name), |
| 2609 | "admin/%s/object_history.html" % app_label, |
| 2610 | "admin/object_history.html", |
| 2611 | ], |
nothing calls this directly
no test coverage detected