14438 script job mapping

This commit is contained in:
Arthur 2024-02-06 09:58:07 -08:00
parent 6930e441ae
commit 5981fc958d
4 changed files with 29 additions and 36 deletions

View File

@ -19,7 +19,7 @@ def update_scripts(apps, schema_editor):
) )
# update all jobs associated with this module/name to point to the new script obj # update all jobs associated with this module/name to point to the new script obj
module.jobs.filter(name=name).update(object_type=ct, object_id=obj.id) module.jobs.filter(name=script).update(object_type=ct, object_id=obj.id)
class Migration(migrations.Migration): class Migration(migrations.Migration):

View File

@ -50,11 +50,6 @@ class Script(EventRulesMixin, JobsMixin, models.Model):
def python_class(self): def python_class(self):
return self.module.get_module_scripts.get(self.name) return self.module.get_module_scripts.get(self.name)
def get_jobs(self):
return self.module.jobs.filter(
name=self.name
)
class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)): class ScriptModuleManager(models.Manager.from_queryset(RestrictedQuerySet)):

View File

@ -1209,7 +1209,7 @@ class ScriptListView(ContentTypePermissionRequiredMixin, View):
return 'extras.view_script' return 'extras.view_script'
def get(self, request): def get(self, request):
script_modules = ScriptModule.objects.restrict(request.user) script_modules = ScriptModule.objects.restrict(request.user).prefetch_related('jobs')
return render(request, 'extras/script_list.html', { return render(request, 'extras/script_list.html', {
'model': ScriptModule, 'model': ScriptModule,
@ -1229,7 +1229,7 @@ class ScriptView(ContentTypePermissionRequiredMixin, View):
def get(self, request, pk): def get(self, request, pk):
script = Script.objects.get(pk=pk) script = Script.objects.get(pk=pk)
script_class = script.python_class() script_class = script.python_class()
jobs = script.get_jobs() jobs = script.jobs.all()
form = script_class.as_form(initial=normalize_querydict(request.GET)) form = script_class.as_form(initial=normalize_querydict(request.GET))
return render(request, 'extras/script.html', { return render(request, 'extras/script.html', {
@ -1246,7 +1246,7 @@ class ScriptView(ContentTypePermissionRequiredMixin, View):
script = Script.objects.get(pk=pk) script = Script.objects.get(pk=pk)
script_class = script.python_class() script_class = script.python_class()
jobs = script.get_jobs() jobs = script.jobs.all()
form = script_class.as_form(request.POST, request.FILES) form = script_class.as_form(request.POST, request.FILES)
# Allow execution only if RQ worker process is running # Allow execution only if RQ worker process is running
@ -1256,7 +1256,7 @@ class ScriptView(ContentTypePermissionRequiredMixin, View):
elif form.is_valid(): elif form.is_valid():
job = Job.enqueue( job = Job.enqueue(
run_script, run_script,
instance=script.module, instance=script,
name=script_class.class_name, name=script_class.class_name,
user=request.user, user=request.user,
schedule_at=form.cleaned_data.pop('_schedule_at'), schedule_at=form.cleaned_data.pop('_schedule_at'),
@ -1286,7 +1286,7 @@ class ScriptSourceView(ContentTypePermissionRequiredMixin, View):
def get(self, request, pk): def get(self, request, pk):
script = Script.objects.get(pk=pk) script = Script.objects.get(pk=pk)
script_class = script.python_class() script_class = script.python_class()
jobs = script.get_jobs() jobs = script.jobs.all()
return render(request, 'extras/script/source.html', { return render(request, 'extras/script/source.html', {
'job_count': jobs.count(), 'job_count': jobs.count(),
@ -1305,7 +1305,7 @@ class ScriptJobsView(ContentTypePermissionRequiredMixin, View):
def get(self, request, pk): def get(self, request, pk):
script = Script.objects.get(pk=pk) script = Script.objects.get(pk=pk)
script_class = script.python_class() script_class = script.python_class()
jobs = script.get_jobs() jobs = script.jobs.all()
jobs_table = JobTable( jobs_table = JobTable(
data=jobs, data=jobs,

View File

@ -52,7 +52,6 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% with jobs=module.get_latest_jobs %}
{% for script in module.scripts.all %} {% for script in module.scripts.all %}
<tr> <tr>
<td> <td>
@ -61,7 +60,7 @@
<td> <td>
{{ script.python_class.Meta.description|markdown|placeholder }} {{ script.python_class.Meta.description|markdown|placeholder }}
</td> </td>
{% with last_result=jobs|get_key:script.python_class.class_name %} {% with last_result=script.get_latest_jobs|get_key:script.name %}
{% if last_result %} {% if last_result %}
<td> <td>
<a href="{% url 'extras:script_result' job_pk=last_result.pk %}">{{ last_result.created|annotated_date }}</a> <a href="{% url 'extras:script_result' job_pk=last_result.pk %}">{{ last_result.created|annotated_date }}</a>
@ -73,10 +72,9 @@
<td class="text-muted">{% trans "Never" %}</td> <td class="text-muted">{% trans "Never" %}</td>
<td class="text-end">{{ ''|placeholder }}</td> <td class="text-end">{{ ''|placeholder }}</td>
{% endif %} {% endif %}
{% endwith %}
</tr> </tr>
{% endfor %}
{% endwith %} {% endwith %}
{% endfor %}
</tbody> </tbody>
</table> </table>
{% endif %} {% endif %}