Răsfoiți Sursa

Added scheduled_time field to JobResult model

kkthxbye-code 3 ani în urmă
părinte
comite
1d9808a92a

+ 2 - 1
netbox/extras/filtersets.py

@@ -437,6 +437,7 @@ class JobResultFilterSet(BaseFilterSet):
     )
     created = django_filters.DateTimeFromToRangeFilter()
     completed = django_filters.DateTimeFromToRangeFilter()
+    scheduled_time = django_filters.DateTimeFromToRangeFilter()
     status = django_filters.MultipleChoiceFilter(
         choices=JobResultStatusChoices,
         null_value=None
@@ -445,7 +446,7 @@ class JobResultFilterSet(BaseFilterSet):
     class Meta:
         model = JobResult
         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):

+ 9 - 1
netbox/extras/forms/filtersets.py

@@ -70,7 +70,7 @@ class JobResultFilterForm(FilterForm):
     fieldsets = (
         (None, ('q',)),
         ('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(
@@ -99,6 +99,14 @@ class JobResultFilterForm(FilterForm):
         required=False,
         widget=DateTimePicker()
     )
+    scheduled_time_after = forms.DateTimeField(
+        required=False,
+        widget=DateTimePicker()
+    )
+    scheduled_time_before = forms.DateTimeField(
+        required=False,
+        widget=DateTimePicker()
+    )
     user = DynamicModelMultipleChoiceField(
         queryset=User.objects.all(),
         required=False,

+ 18 - 0
netbox/extras/migrations/0080_add_jobresult_scheduled_time.py

@@ -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),
+        ),
+    ]

+ 5 - 0
netbox/extras/models/models.py

@@ -505,6 +505,10 @@ class JobResult(models.Model):
         null=True,
         blank=True
     )
+    scheduled_time = models.DateTimeField(
+        null=True,
+        blank=True
+    )
     user = models.ForeignKey(
         to=User,
         on_delete=models.SET_NULL,
@@ -587,6 +591,7 @@ class JobResult(models.Model):
 
         if schedule_at := kwargs.pop("schedule_at", None):
             job_result.status = JobResultStatusChoices.STATUS_SCHEDULED
+            job_result.scheduled_time = schedule_at
             job_result.save()
 
             queue.enqueue_at(schedule_at, func, job_id=str(job_result.job_id), job_result=job_result, **kwargs)

+ 0 - 1
netbox/extras/reports.py

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

+ 1 - 1
netbox/extras/tables/tables.py

@@ -56,7 +56,7 @@ class JobResultTable(NetBoxTable):
     class Meta(NetBoxTable.Meta):
         model = JobResult
         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',)
 

+ 3 - 0
netbox/templates/extras/htmx/report_result.html

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

+ 3 - 0
netbox/templates/extras/htmx/script_result.html

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

+ 2 - 0
netbox/templates/extras/inc/job_label.html

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