Coverage for apis_core/history/tables.py: 97%

29 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2025-06-25 10:00 +0000

1import django_tables2 as tables 

2 

3from apis_core.generic.tables import ActionColumn, CustomTemplateColumn, ViewColumn 

4 

5 

6class DescriptionColumnHistory(CustomTemplateColumn): 

7 """ 

8 A column showing a model description 

9 """ 

10 

11 template_name = "history/columns/description.html" 

12 orderable = False 

13 

14 

15class OriginalIDColumn(CustomTemplateColumn): 

16 """ 

17 A column showing the original id of a model instance 

18 """ 

19 

20 template_name = "history/columns/original_id.html" 

21 orderable = False 

22 verbose_name = "Original ID" 

23 

24 

25class ResetColumn(ActionColumn): 

26 """ 

27 A column showing a reset button 

28 """ 

29 

30 template_name = "history/columns/reset.html" 

31 permission = "change" 

32 

33 

34class APISHistoryTableBaseTable(tables.Table): 

35 history_id = tables.Column(verbose_name="ID") 

36 original_id = OriginalIDColumn() 

37 desc = DescriptionColumnHistory() 

38 view = ViewColumn() 

39 

40 class Meta: 

41 fields = ["history_id", "desc", "most_recent", "view"] 

42 

43 

44class HistoryGenericTable(tables.Table): 

45 model = tables.Column(empty_values=()) 

46 fields_changed = tables.Column(empty_values=()) 

47 instance = tables.Column(linkify=lambda record: record.get_absolute_url()) 

48 fields_changed = tables.TemplateColumn( 

49 template_name="history/columns/fields_changed.html" 

50 ) 

51 reset = ResetColumn() 

52 

53 class Meta: 

54 fields = [ 

55 "model", 

56 "instance", 

57 "fields_changed", 

58 "history_type", 

59 "history_date", 

60 "history_user", 

61 ] 

62 

63 def render_model(self, record): 

64 return record.instance.__class__.__name__