Added scheduled_time field to JobResult model

This commit is contained in:
kkthxbye-code 2022-10-16 13:42:28 +02:00
parent ef0b455b05
commit 1d9808a92a
9 changed files with 43 additions and 4 deletions

View File

@ -437,6 +437,7 @@ class JobResultFilterSet(BaseFilterSet):
) )
created = django_filters.DateTimeFromToRangeFilter() created = django_filters.DateTimeFromToRangeFilter()
completed = django_filters.DateTimeFromToRangeFilter() completed = django_filters.DateTimeFromToRangeFilter()
scheduled_time = django_filters.DateTimeFromToRangeFilter()
status = django_filters.MultipleChoiceFilter( status = django_filters.MultipleChoiceFilter(
choices=JobResultStatusChoices, choices=JobResultStatusChoices,
null_value=None null_value=None
@ -445,7 +446,7 @@ class JobResultFilterSet(BaseFilterSet):
class Meta: class Meta:
model = JobResult model = JobResult
fields = [ fields = [
'id', 'created', 'completed', 'status', 'user', 'obj_type', 'name' 'id', 'created', 'completed', 'scheduled_time', 'status', 'user', 'obj_type', 'name'
] ]
def search(self, queryset, name, value): def search(self, queryset, name, value):

View File

@ -70,7 +70,7 @@ class JobResultFilterForm(FilterForm):
fieldsets = ( fieldsets = (
(None, ('q',)), (None, ('q',)),
('Attributes', ('obj_type', 'status')), ('Attributes', ('obj_type', 'status')),
('Creation', ('created_before', 'created_after', 'completed_before', 'completed_after', 'user')), ('Creation', ('created_before', 'created_after', 'completed_before', 'completed_after', 'scheduled_time_before', 'scheduled_time_after', 'user')),
) )
obj_type = ContentTypeChoiceField( obj_type = ContentTypeChoiceField(
@ -99,6 +99,14 @@ class JobResultFilterForm(FilterForm):
required=False, required=False,
widget=DateTimePicker() widget=DateTimePicker()
) )
scheduled_time_after = forms.DateTimeField(
required=False,
widget=DateTimePicker()
)
scheduled_time_before = forms.DateTimeField(
required=False,
widget=DateTimePicker()
)
user = DynamicModelMultipleChoiceField( user = DynamicModelMultipleChoiceField(
queryset=User.objects.all(), queryset=User.objects.all(),
required=False, required=False,

View File

@ -0,0 +1,18 @@
# Generated by Django 4.1.1 on 2022-10-16 09:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('extras', '0079_change_jobresult_order'),
]
operations = [
migrations.AddField(
model_name='jobresult',
name='scheduled_time',
field=models.DateTimeField(blank=True, null=True),
),
]

View File

@ -505,6 +505,10 @@ class JobResult(models.Model):
null=True, null=True,
blank=True blank=True
) )
scheduled_time = models.DateTimeField(
null=True,
blank=True
)
user = models.ForeignKey( user = models.ForeignKey(
to=User, to=User,
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
@ -587,6 +591,7 @@ class JobResult(models.Model):
if schedule_at := kwargs.pop("schedule_at", None): if schedule_at := kwargs.pop("schedule_at", None):
job_result.status = JobResultStatusChoices.STATUS_SCHEDULED job_result.status = JobResultStatusChoices.STATUS_SCHEDULED
job_result.scheduled_time = schedule_at
job_result.save() 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)

View File

@ -85,7 +85,6 @@ def run_report(job_result, *args, **kwargs):
try: try:
report.run(job_result) report.run(job_result)
except Exception as e: except Exception as e:
print(e)
job_result.set_status(JobResultStatusChoices.STATUS_ERRORED) job_result.set_status(JobResultStatusChoices.STATUS_ERRORED)
job_result.save() job_result.save()
logging.error(f"Error during execution of report {job_result.name}") logging.error(f"Error during execution of report {job_result.name}")

View File

@ -56,7 +56,7 @@ class JobResultTable(NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = JobResult model = JobResult
fields = ( fields = (
'pk', 'id', 'name', 'obj_type', 'job_id', 'created', 'completed', 'user', 'status', 'pk', 'id', 'name', 'obj_type', 'job_id', 'created', 'completed', 'scheduled_time', 'user', 'status',
) )
default_columns = ('pk', 'id', 'name', 'obj_type', 'status', 'created', 'completed', 'user',) default_columns = ('pk', 'id', 'name', 'obj_type', 'status', 'created', 'completed', 'user',)

View File

@ -2,6 +2,9 @@
<p> <p>
Initiated: <strong>{{ result.created|annotated_date }}</strong> Initiated: <strong>{{ result.created|annotated_date }}</strong>
{% if result.scheduled_time %}
Scheduled for: <strong>{{ result.scheduled_time|annotated_date }}</strong>
{% endif %}
{% if result.completed %} {% if result.completed %}
Duration: <strong>{{ result.duration }}</strong> Duration: <strong>{{ result.duration }}</strong>
{% endif %} {% endif %}

View File

@ -3,6 +3,9 @@
<p> <p>
Initiated: <strong>{{ result.created|annotated_date }}</strong> Initiated: <strong>{{ result.created|annotated_date }}</strong>
{% if result.scheduled_time %}
Scheduled for: <strong>{{ result.scheduled_time|annotated_date }}</strong>
{% endif %}
{% if result.completed %} {% if result.completed %}
Duration: <strong>{{ result.duration }}</strong> Duration: <strong>{{ result.duration }}</strong>
{% endif %} {% endif %}

View File

@ -4,6 +4,8 @@
<span class="badge bg-danger">Errored</span> <span class="badge bg-danger">Errored</span>
{% elif result.status == 'pending' %} {% elif result.status == 'pending' %}
<span class="badge bg-info">Pending</span> <span class="badge bg-info">Pending</span>
{% elif result.status == 'scheduled' %}
<span class="badge bg-info">Scheduled</span>
{% elif result.status == 'running' %} {% elif result.status == 'running' %}
<span class="badge bg-warning">Running</span> <span class="badge bg-warning">Running</span>
{% elif result.status == 'completed' %} {% elif result.status == 'completed' %}