jobs.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext_lazy as _
  3. from netbox.tables import BaseTable, NetBoxTable, columns
  4. from core.constants import JOB_LOG_ENTRY_LEVELS
  5. from core.models import Job
  6. from core.tables.columns import BadgeColumn
  7. class JobTable(NetBoxTable):
  8. id = tables.Column(
  9. verbose_name=_('ID'),
  10. linkify=True
  11. )
  12. name = tables.Column(
  13. verbose_name=_('Name'),
  14. linkify=True
  15. )
  16. object_type = columns.ContentTypeColumn(
  17. verbose_name=_('Type')
  18. )
  19. object = tables.Column(
  20. verbose_name=_('Object'),
  21. linkify=True,
  22. orderable=False
  23. )
  24. status = columns.ChoiceFieldColumn(
  25. verbose_name=_('Status'),
  26. )
  27. created = columns.DateTimeColumn(
  28. verbose_name=_('Created'),
  29. )
  30. scheduled = columns.DateTimeColumn(
  31. verbose_name=_('Scheduled'),
  32. )
  33. interval = columns.DurationColumn(
  34. verbose_name=_('Interval'),
  35. )
  36. started = columns.DateTimeColumn(
  37. verbose_name=_('Started'),
  38. )
  39. completed = columns.DateTimeColumn(
  40. verbose_name=_('Completed'),
  41. )
  42. queue_name = tables.Column(
  43. verbose_name=_('Queue'),
  44. )
  45. log_entries = tables.Column(
  46. verbose_name=_('Log Entries'),
  47. )
  48. actions = columns.ActionsColumn(
  49. actions=('delete',)
  50. )
  51. class Meta(NetBoxTable.Meta):
  52. model = Job
  53. fields = (
  54. 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'scheduled', 'interval', 'started',
  55. 'completed', 'user', 'queue_name', 'log_entries', 'error', 'job_id',
  56. )
  57. default_columns = (
  58. 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'started', 'completed', 'user',
  59. )
  60. def render_log_entries(self, value):
  61. return len(value)
  62. class JobLogEntryTable(BaseTable):
  63. timestamp = columns.DateTimeColumn(
  64. timespec='milliseconds',
  65. verbose_name=_('Time'),
  66. )
  67. level = BadgeColumn(
  68. badges=JOB_LOG_ENTRY_LEVELS,
  69. verbose_name=_('Level'),
  70. )
  71. message = tables.Column(
  72. verbose_name=_('Message'),
  73. )
  74. class Meta(BaseTable.Meta):
  75. empty_text = _('No log entries')
  76. fields = ('timestamp', 'level', 'message')