mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 05:28:16 -06:00
Clean up tables
This commit is contained in:
parent
66a017368c
commit
64340ab33b
26
netbox/core/constants.py
Normal file
26
netbox/core/constants.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from rq.job import JobStatus
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'RQ_TASK_STATUSES',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Status:
|
||||||
|
label: str
|
||||||
|
color: str
|
||||||
|
|
||||||
|
|
||||||
|
RQ_TASK_STATUSES = {
|
||||||
|
JobStatus.QUEUED: Status(_('Queued'), 'cyan'),
|
||||||
|
JobStatus.FINISHED: Status(_('Finished'), 'green'),
|
||||||
|
JobStatus.FAILED: Status(_('Failed'), 'red'),
|
||||||
|
JobStatus.STARTED: Status(_('Started'), 'blue'),
|
||||||
|
JobStatus.DEFERRED: Status(_('Deferred'), 'gray'),
|
||||||
|
JobStatus.SCHEDULED: Status(_('Scheduled'), 'purple'),
|
||||||
|
JobStatus.STOPPED: Status(_('Stopped'), 'orange'),
|
||||||
|
JobStatus.CANCELED: Status(_('Cancelled'), 'yellow'),
|
||||||
|
}
|
@ -1,9 +1,12 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
from core.constants import RQ_TASK_STATUSES
|
||||||
from netbox.registry import registry
|
from netbox.registry import registry
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'BackendTypeColumn',
|
'BackendTypeColumn',
|
||||||
|
'RQJobStatusColumn',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -18,3 +21,16 @@ class BackendTypeColumn(tables.Column):
|
|||||||
|
|
||||||
def value(self, value):
|
def value(self, value):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
class RQJobStatusColumn(tables.Column):
|
||||||
|
"""
|
||||||
|
Render a colored label for the status of an RQ job.
|
||||||
|
"""
|
||||||
|
def render(self, value):
|
||||||
|
status = RQ_TASK_STATUSES.get(value)
|
||||||
|
return mark_safe(f'<span class="badge text-bg-{status.color}">{status.label}</span>')
|
||||||
|
|
||||||
|
def value(self, value):
|
||||||
|
status = RQ_TASK_STATUSES.get(value)
|
||||||
|
return status.label
|
||||||
|
@ -1,48 +1,100 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django_tables2.utils import A # alias for Accessor
|
|
||||||
from django.urls import reverse
|
|
||||||
from django.utils.html import mark_safe
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from django_tables2.utils import A
|
||||||
|
|
||||||
from netbox.tables import BaseTable, columns
|
from core.tables.columns import RQJobStatusColumn
|
||||||
from utilities.templatetags.helpers import annotated_date
|
from netbox.tables import BaseTable
|
||||||
|
|
||||||
|
|
||||||
class BackgroundQueueTable(BaseTable):
|
class BackgroundQueueTable(BaseTable):
|
||||||
name = tables.LinkColumn("core:background_task_list", args=[A("index"), "queued"], verbose_name=_("Name"))
|
name = tables.Column(
|
||||||
jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "queued"], verbose_name=_("Queued"))
|
verbose_name=_("Name")
|
||||||
oldest_job_timestamp = tables.Column(verbose_name=_("Oldest Queued"))
|
)
|
||||||
started_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "started"], verbose_name=_("Active"))
|
jobs = tables.Column(
|
||||||
deferred_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "deferred"], verbose_name=_("Deferred"))
|
linkify=("core:background_task_list", [A("index"), "queued"]),
|
||||||
finished_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "finished"], verbose_name=_("Finished"))
|
verbose_name=_("Queued")
|
||||||
failed_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "failed"], verbose_name=_("Failed"))
|
)
|
||||||
scheduled_jobs = tables.LinkColumn("core:background_task_list", args=[A("index"), "scheduled"], verbose_name=_("Scheduled"))
|
oldest_job_timestamp = tables.Column(
|
||||||
workers = tables.LinkColumn("core:worker_list", args=[A("index")], verbose_name=_("Workers"))
|
verbose_name=_("Oldest Task")
|
||||||
host = tables.Column(accessor="connection_kwargs__host", verbose_name=_("Host"))
|
)
|
||||||
port = tables.Column(accessor="connection_kwargs__port", verbose_name=_("Port"))
|
started_jobs = tables.Column(
|
||||||
db = tables.Column(accessor="connection_kwargs__db", verbose_name=_("DB"))
|
linkify=("core:background_task_list", [A("index"), "started"]),
|
||||||
pid = tables.Column(accessor="scheduler__pid", verbose_name=_("Scheduler PID"))
|
verbose_name=_("Active")
|
||||||
|
)
|
||||||
|
deferred_jobs = tables.Column(
|
||||||
|
linkify=("core:background_task_list", [A("index"), "deferred"]),
|
||||||
|
verbose_name=_("Deferred")
|
||||||
|
)
|
||||||
|
finished_jobs = tables.Column(
|
||||||
|
linkify=("core:background_task_list", [A("index"), "finished"]),
|
||||||
|
verbose_name=_("Finished")
|
||||||
|
)
|
||||||
|
failed_jobs = tables.Column(
|
||||||
|
linkify=("core:background_task_list", [A("index"), "failed"]),
|
||||||
|
verbose_name=_("Failed")
|
||||||
|
)
|
||||||
|
scheduled_jobs = tables.Column(
|
||||||
|
linkify=("core:background_task_list", [A("index"), "scheduled"]),
|
||||||
|
verbose_name=_("Scheduled")
|
||||||
|
)
|
||||||
|
workers = tables.Column(
|
||||||
|
linkify=("core:worker_list", [A("index")]),
|
||||||
|
verbose_name=_("Workers")
|
||||||
|
)
|
||||||
|
host = tables.Column(
|
||||||
|
accessor="connection_kwargs__host",
|
||||||
|
verbose_name=_("Host")
|
||||||
|
)
|
||||||
|
port = tables.Column(
|
||||||
|
accessor="connection_kwargs__port",
|
||||||
|
verbose_name=_("Port")
|
||||||
|
)
|
||||||
|
db = tables.Column(
|
||||||
|
accessor="connection_kwargs__db",
|
||||||
|
verbose_name=_("DB")
|
||||||
|
)
|
||||||
|
pid = tables.Column(
|
||||||
|
accessor="scheduler__pid",
|
||||||
|
verbose_name=_("Scheduler PID")
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
empty_text = _('No tasks found')
|
empty_text = _('No queues found')
|
||||||
fields = (
|
fields = (
|
||||||
'name', 'jobs', 'oldest_job_timestamp', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs', 'scheduled_jobs', 'workers', 'host', 'port', 'db', 'pid',
|
'name', 'jobs', 'oldest_job_timestamp', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs',
|
||||||
|
'scheduled_jobs', 'workers', 'host', 'port', 'db', 'pid',
|
||||||
)
|
)
|
||||||
default_columns = (
|
default_columns = (
|
||||||
'name', 'jobs', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs', 'scheduled_jobs', 'workers',
|
'name', 'jobs', 'started_jobs', 'deferred_jobs', 'finished_jobs', 'failed_jobs', 'scheduled_jobs',
|
||||||
|
'workers',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BackgroundTaskTable(BaseTable):
|
class BackgroundTaskTable(BaseTable):
|
||||||
id = tables.LinkColumn("core:background_task", args=[A("id")], verbose_name=_("ID"))
|
id = tables.Column(
|
||||||
created_at = tables.DateTimeColumn(verbose_name=_("Created"))
|
linkify=("core:background_task", [A("id")]),
|
||||||
enqueued_at = tables.DateTimeColumn(verbose_name=_("Enqueued"))
|
verbose_name=_("ID")
|
||||||
ended_at = tables.DateTimeColumn(verbose_name=_("Ended"))
|
)
|
||||||
status = columns.ChoiceFieldColumn(verbose_name=_("Status"), accessor='get_status')
|
created_at = tables.DateTimeColumn(
|
||||||
callable = tables.Column(empty_values=(), verbose_name=_("Callable"))
|
verbose_name=_("Created")
|
||||||
|
)
|
||||||
|
enqueued_at = tables.DateTimeColumn(
|
||||||
|
verbose_name=_("Enqueued")
|
||||||
|
)
|
||||||
|
ended_at = tables.DateTimeColumn(
|
||||||
|
verbose_name=_("Ended")
|
||||||
|
)
|
||||||
|
status = RQJobStatusColumn(
|
||||||
|
verbose_name=_("Status"),
|
||||||
|
accessor='get_status'
|
||||||
|
)
|
||||||
|
callable = tables.Column(
|
||||||
|
empty_values=(),
|
||||||
|
verbose_name=_("Callable")
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
empty_text = _('No jobs found')
|
empty_text = _('No tasks found')
|
||||||
fields = (
|
fields = (
|
||||||
'id', 'created_at', 'enqueued_at', 'ended_at', 'status', 'callable',
|
'id', 'created_at', 'enqueued_at', 'ended_at', 'status', 'callable',
|
||||||
)
|
)
|
||||||
@ -58,10 +110,19 @@ class BackgroundTaskTable(BaseTable):
|
|||||||
|
|
||||||
|
|
||||||
class WorkerTable(BaseTable):
|
class WorkerTable(BaseTable):
|
||||||
name = tables.LinkColumn("core:worker", args=[A("name")], verbose_name=_("Name"))
|
name = tables.Column(
|
||||||
state = tables.Column(verbose_name=_("State"))
|
linkify=("core:worker", [A("name")]),
|
||||||
birth_date = tables.DateTimeColumn(verbose_name=_("Birth"))
|
verbose_name=_("Name")
|
||||||
pid = tables.Column(verbose_name=_("PID"))
|
)
|
||||||
|
state = tables.Column(
|
||||||
|
verbose_name=_("State")
|
||||||
|
)
|
||||||
|
birth_date = tables.DateTimeColumn(
|
||||||
|
verbose_name=_("Birth")
|
||||||
|
)
|
||||||
|
pid = tables.Column(
|
||||||
|
verbose_name=_("PID")
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
empty_text = _('No workers found')
|
empty_text = _('No workers found')
|
||||||
|
Loading…
Reference in New Issue
Block a user