Coverage for core/tables/data.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1import django_tables2 as tables 

2from django.utils.translation import gettext_lazy as _ 

3 

4from core.models import * 

5from netbox.tables import NetBoxTable, PrimaryModelTable, columns 

6 

7from .columns import BackendTypeColumn 

8from .template_code import DATA_SOURCE_SYNC_BUTTON 

9 

10__all__ = ( 

11 'DataFileTable', 

12 'DataSourceTable', 

13) 

14 

15 

16class DataSourceTable(PrimaryModelTable): 

17 name = tables.Column( 

18 verbose_name=_('Name'), 

19 linkify=True, 

20 ) 

21 type = BackendTypeColumn( 

22 verbose_name=_('Type'), 

23 ) 

24 status = columns.ChoiceFieldColumn( 

25 verbose_name=_('Status'), 

26 ) 

27 enabled = columns.BooleanColumn( 

28 verbose_name=_('Enabled'), 

29 ) 

30 sync_interval = columns.ChoiceFieldColumn( 

31 verbose_name=_('Sync interval'), 

32 ) 

33 last_synced = tables.DateTimeColumn( 

34 verbose_name=_('Last Synced'), 

35 ) 

36 file_count = tables.Column( 

37 verbose_name=_('Files'), 

38 ) 

39 tags = columns.TagColumn( 

40 url_name='core:datasource_list', 

41 ) 

42 actions = columns.ActionsColumn( 

43 extra_buttons=DATA_SOURCE_SYNC_BUTTON, 

44 ) 

45 

46 class Meta(PrimaryModelTable.Meta): 

47 model = DataSource 

48 fields = ( 

49 'pk', 'id', 'name', 'type', 'status', 'enabled', 'source_url', 'description', 'sync_interval', 'comments', 

50 'parameters', 'last_synced', 'created', 'last_updated', 'file_count', 

51 ) 

52 default_columns = ('pk', 'name', 'type', 'status', 'enabled', 'description', 'sync_interval', 'file_count') 

53 

54 

55class DataFileTable(NetBoxTable): 

56 source = tables.Column( 

57 verbose_name=_('Source'), 

58 linkify=True 

59 ) 

60 path = tables.Column( 

61 verbose_name=_('Path'), 

62 linkify=True 

63 ) 

64 last_updated = columns.DateTimeColumn( 

65 verbose_name=_('Last updated'), 

66 ) 

67 actions = columns.ActionsColumn( 

68 actions=('delete',) 

69 ) 

70 

71 class Meta(NetBoxTable.Meta): 

72 model = DataFile 

73 fields = ( 

74 'pk', 'id', 'source', 'path', 'last_updated', 'size', 'hash', 

75 ) 

76 default_columns = ('pk', 'source', 'path', 'size', 'last_updated')