Coverage for apis_core/history/tables.py: 87%
38 statements
« prev ^ index » next coverage.py v7.5.3, created at 2026-03-06 11:42 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2026-03-06 11:42 +0000
1import django_tables2 as tables
2from django.apps import apps
4from apis_core.generic.tables import ActionColumn, CustomTemplateColumn
7class DescriptionColumnHistory(CustomTemplateColumn):
8 """
9 A column showing a model description
10 """
12 template_name = "history/columns/description.html"
13 orderable = False
16class OriginalIDColumn(CustomTemplateColumn):
17 """
18 A column showing the original id of a model instance
19 """
21 template_name = "history/columns/original_id.html"
22 orderable = False
23 verbose_name = "Original ID"
26class ResetColumn(ActionColumn):
27 """
28 A column showing a reset button
29 """
31 template_name = "history/columns/reset.html"
32 permission = "change"
35class ViewColumn(ActionColumn):
36 """
37 A column showing a view button
38 """
40 template_name = "columns/view.html"
41 permission = "view"
44class APISHistoryTableBaseTable(tables.Table):
45 history_id = tables.Column(verbose_name="ID")
46 original_id = OriginalIDColumn()
47 desc = DescriptionColumnHistory()
48 view = ViewColumn()
50 class Meta:
51 fields = ["history_id", "desc", "most_recent", "view"]
54class HistoryGenericTable(tables.Table):
55 model = tables.Column(empty_values=())
56 fields_changed = tables.Column(empty_values=())
57 instance = tables.Column(linkify=lambda record: record.get_absolute_url())
58 fields_changed = tables.TemplateColumn(
59 template_name="history/columns/fields_changed.html"
60 )
61 reset = ResetColumn()
63 class Meta:
64 fields = [
65 "model",
66 "instance",
67 "fields_changed",
68 "history_type",
69 "history_date",
70 "history_user",
71 ]
73 def render_model(self, record):
74 return record.instance.__class__.__name__
76 def __init__(self, *args, **kwargs):
77 if apps.is_installed("apis_core.collections"):
78 from apis_core.collections.columns import CollectionsColumn
80 kwargs["extra_columns"] = [("collections", CollectionsColumn())]
81 super().__init__(*args, **kwargs)