2021-04-21 12:27:18 +00:00
|
|
|
from django.urls import reverse
|
2015-07-16 13:07:15 +00:00
|
|
|
from django.shortcuts import redirect, render
|
2014-11-21 13:53:39 +00:00
|
|
|
from django.utils.safestring import mark_safe
|
2023-11-17 12:25:13 +00:00
|
|
|
from django.utils.translation import ngettext, gettext_lazy as _
|
2014-10-27 13:29:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
def run_monitor(modeladmin, request, queryset):
|
2014-11-20 16:48:50 +00:00
|
|
|
""" Resource and ResourceData run monitors """
|
|
|
|
referer = request.META.get('HTTP_REFERER')
|
2021-03-30 10:51:12 +00:00
|
|
|
run_async = modeladmin.model.monitor.__defaults__[0]
|
2014-11-27 19:17:26 +00:00
|
|
|
logs = set()
|
2014-10-27 13:29:02 +00:00
|
|
|
for resource in queryset:
|
2015-04-12 18:18:10 +00:00
|
|
|
rlogs = resource.monitor()
|
2021-03-30 10:51:12 +00:00
|
|
|
if not run_async:
|
2015-06-16 11:34:46 +00:00
|
|
|
logs = logs.union(set([str(log.pk) for log in rlogs]))
|
2014-10-27 13:29:02 +00:00
|
|
|
modeladmin.log_change(request, resource, _("Run monitors"))
|
2021-03-30 10:51:12 +00:00
|
|
|
if run_async:
|
2014-11-27 19:17:26 +00:00
|
|
|
num = len(queryset)
|
2015-05-01 18:05:34 +00:00
|
|
|
# TODO listfilter by uuid: task.request.id + ?task_id__in=ids
|
2014-11-21 13:53:39 +00:00
|
|
|
link = reverse('admin:djcelery_taskstate_changelist')
|
2023-11-17 12:25:13 +00:00
|
|
|
msg = ngettext(
|
2014-11-21 13:53:39 +00:00
|
|
|
_("One selected resource has been <a href='%s'>scheduled for monitoring</a>.") % link,
|
|
|
|
_("%s selected resource have been <a href='%s'>scheduled for monitoring</a>.") % (num, link),
|
2014-11-20 16:48:50 +00:00
|
|
|
num)
|
|
|
|
else:
|
2014-11-27 19:17:26 +00:00
|
|
|
num = len(logs)
|
|
|
|
if num == 1:
|
2015-03-20 15:13:08 +00:00
|
|
|
log_pk = int(logs.pop())
|
|
|
|
link = reverse('admin:orchestration_backendlog_change', args=(log_pk,))
|
2014-11-27 19:17:26 +00:00
|
|
|
msg = _("One related monitor has <a href='%s'>been executed</a>.") % link
|
|
|
|
elif num >= 1:
|
2014-11-21 13:53:39 +00:00
|
|
|
link = reverse('admin:orchestration_backendlog_changelist')
|
|
|
|
link += '?id__in=%s' % ','.join(logs)
|
2014-11-27 19:17:26 +00:00
|
|
|
msg = _("%s related monitors have <a href='%s'>been executed</a>.") % (num, link)
|
2014-11-21 13:53:39 +00:00
|
|
|
else:
|
|
|
|
msg = _("No related monitors have been executed.")
|
|
|
|
modeladmin.message_user(request, mark_safe(msg))
|
2014-10-27 13:29:02 +00:00
|
|
|
if referer:
|
|
|
|
return redirect(referer)
|
|
|
|
run_monitor.url_name = 'monitor'
|
2015-07-16 13:07:15 +00:00
|
|
|
|
|
|
|
|
2015-07-28 10:49:20 +00:00
|
|
|
def show_history(modeladmin, request, queryset):
|
2015-07-16 13:07:15 +00:00
|
|
|
context = {
|
2015-07-27 12:55:35 +00:00
|
|
|
'ids': ','.join(map(str, queryset.values_list('id', flat=True))),
|
2015-07-16 13:07:15 +00:00
|
|
|
}
|
2015-07-17 13:29:29 +00:00
|
|
|
return render(request, 'admin/resources/resourcedata/history.html', context)
|