mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 01:06:11 -06:00
Add interval to JobResult
This commit is contained in:
parent
cb52d9c84e
commit
d505c723dc
@ -385,8 +385,8 @@ class JobResultSerializer(BaseModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = JobResult
|
model = JobResult
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'url', 'display', 'status', 'created', 'scheduled', 'started', 'completed', 'name', 'obj_type',
|
'id', 'url', 'display', 'status', 'created', 'scheduled', 'interval', 'started', 'completed', 'name',
|
||||||
'user', 'data', 'job_id',
|
'obj_type', 'user', 'data', 'job_id',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@ __all__ = (
|
|||||||
'ConfigContextFilterSet',
|
'ConfigContextFilterSet',
|
||||||
'ContentTypeFilterSet',
|
'ContentTypeFilterSet',
|
||||||
'CustomFieldFilterSet',
|
'CustomFieldFilterSet',
|
||||||
'JobResultFilterSet',
|
|
||||||
'CustomLinkFilterSet',
|
'CustomLinkFilterSet',
|
||||||
'ExportTemplateFilterSet',
|
'ExportTemplateFilterSet',
|
||||||
'ImageAttachmentFilterSet',
|
'ImageAttachmentFilterSet',
|
||||||
|
'JobResultFilterSet',
|
||||||
'JournalEntryFilterSet',
|
'JournalEntryFilterSet',
|
||||||
'LocalConfigContextFilterSet',
|
'LocalConfigContextFilterSet',
|
||||||
'ObjectChangeFilterSet',
|
'ObjectChangeFilterSet',
|
||||||
@ -537,7 +537,7 @@ class JobResultFilterSet(BaseFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobResult
|
model = JobResult
|
||||||
fields = ('id', 'status', 'user', 'obj_type', 'name')
|
fields = ('id', 'interval', 'status', 'user', 'obj_type', 'name')
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -13,6 +13,11 @@ class Migration(migrations.Migration):
|
|||||||
name='scheduled',
|
name='scheduled',
|
||||||
field=models.DateTimeField(blank=True, null=True),
|
field=models.DateTimeField(blank=True, null=True),
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='jobresult',
|
||||||
|
name='interval',
|
||||||
|
field=models.PositiveIntegerField(blank=True, null=True),
|
||||||
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='jobresult',
|
model_name='jobresult',
|
||||||
name='started',
|
name='started',
|
||||||
|
@ -585,6 +585,11 @@ class JobResult(models.Model):
|
|||||||
null=True,
|
null=True,
|
||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
|
interval = models.PositiveIntegerField(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
help_text=_("Recurrence interval (in minutes)")
|
||||||
|
)
|
||||||
started = models.DateTimeField(
|
started = models.DateTimeField(
|
||||||
null=True,
|
null=True,
|
||||||
blank=True
|
blank=True
|
||||||
@ -662,32 +667,31 @@ class JobResult(models.Model):
|
|||||||
self.completed = timezone.now()
|
self.completed = timezone.now()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def enqueue_job(cls, func, name, obj_type, user, schedule_at=None, *args, **kwargs):
|
def enqueue_job(cls, func, name, obj_type, user, schedule_at=None, interval=None, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Create a JobResult instance and enqueue a job using the given callable
|
Create a JobResult instance and enqueue a job using the given callable
|
||||||
|
|
||||||
|
Args:
|
||||||
func: The callable object to be enqueued for execution
|
func: The callable object to be enqueued for execution
|
||||||
name: Name for the JobResult instance
|
name: Name for the JobResult instance
|
||||||
obj_type: ContentType to link to the JobResult instance obj_type
|
obj_type: ContentType to link to the JobResult instance obj_type
|
||||||
user: User object to link to the JobResult instance
|
user: User object to link to the JobResult instance
|
||||||
schedule_at: Schedule the job to be executed at the passed date and time
|
schedule_at: Schedule the job to be executed at the passed date and time
|
||||||
args: additional args passed to the callable
|
interval: Recurrence interval (in minutes)
|
||||||
kwargs: additional kargs passed to the callable
|
|
||||||
"""
|
"""
|
||||||
job_result: JobResult = cls.objects.create(
|
queue = django_rq.get_queue('default')
|
||||||
|
status = JobResultStatusChoices.STATUS_SCHEDULED if schedule_at else JobResultStatusChoices.STATUS_PENDING
|
||||||
|
job_result: JobResult = JobResult.objects.create(
|
||||||
name=name,
|
name=name,
|
||||||
|
status=status,
|
||||||
obj_type=obj_type,
|
obj_type=obj_type,
|
||||||
|
scheduled=schedule_at,
|
||||||
|
interval=interval,
|
||||||
user=user,
|
user=user,
|
||||||
job_id=uuid.uuid4()
|
job_id=uuid.uuid4()
|
||||||
)
|
)
|
||||||
|
|
||||||
queue = django_rq.get_queue("default")
|
|
||||||
|
|
||||||
if schedule_at:
|
if schedule_at:
|
||||||
job_result.status = JobResultStatusChoices.STATUS_SCHEDULED
|
|
||||||
job_result.scheduled = schedule_at
|
|
||||||
job_result.save()
|
|
||||||
|
|
||||||
queue.enqueue_at(schedule_at, func, job_id=str(job_result.job_id), job_result=job_result, **kwargs)
|
queue.enqueue_at(schedule_at, func, job_id=str(job_result.job_id), job_result=job_result, **kwargs)
|
||||||
else:
|
else:
|
||||||
queue.enqueue(func, job_id=str(job_result.job_id), job_result=job_result, **kwargs)
|
queue.enqueue(func, job_id=str(job_result.job_id), job_result=job_result, **kwargs)
|
||||||
|
@ -8,9 +8,9 @@ from .template_code import *
|
|||||||
__all__ = (
|
__all__ = (
|
||||||
'ConfigContextTable',
|
'ConfigContextTable',
|
||||||
'CustomFieldTable',
|
'CustomFieldTable',
|
||||||
'JobResultTable',
|
|
||||||
'CustomLinkTable',
|
'CustomLinkTable',
|
||||||
'ExportTemplateTable',
|
'ExportTemplateTable',
|
||||||
|
'JobResultTable',
|
||||||
'JournalEntryTable',
|
'JournalEntryTable',
|
||||||
'ObjectChangeTable',
|
'ObjectChangeTable',
|
||||||
'SavedFilterTable',
|
'SavedFilterTable',
|
||||||
@ -41,7 +41,6 @@ class JobResultTable(NetBoxTable):
|
|||||||
name = tables.Column(
|
name = tables.Column(
|
||||||
linkify=True
|
linkify=True
|
||||||
)
|
)
|
||||||
|
|
||||||
actions = columns.ActionsColumn(
|
actions = columns.ActionsColumn(
|
||||||
actions=('delete',)
|
actions=('delete',)
|
||||||
)
|
)
|
||||||
@ -49,10 +48,12 @@ class JobResultTable(NetBoxTable):
|
|||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = JobResult
|
model = JobResult
|
||||||
fields = (
|
fields = (
|
||||||
'pk', 'id', 'name', 'obj_type', 'status', 'created', 'scheduled', 'started', 'completed', 'user', 'job_id',
|
'pk', 'id', 'name', 'obj_type', 'status', 'created', 'scheduled', 'interval', 'started', 'completed',
|
||||||
|
'user', 'job_id',
|
||||||
)
|
)
|
||||||
default_columns = (
|
default_columns = (
|
||||||
'pk', 'id', 'name', 'obj_type', 'status', 'created', 'scheduled', 'started', 'completed', 'user',
|
'pk', 'id', 'name', 'obj_type', 'status', 'created', 'scheduled', 'interval', 'started', 'completed',
|
||||||
|
'user',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user