from django.contrib import messages from django.core.mail import mail_admins from django.utils.html import escape from django.utils.translation import ugettext_lazy as _ def send_report(method, args, log): backend = method.im_class().get_name() server = args[0] subject = '[Orchestra] %s execution %s on %s' subject = subject % (backend, log.state, server) separator = "\n%s\n\n" % ('~ '*40,) message = separator.join([ "[EXIT CODE] %s" % log.exit_code, "[STDERR]\n%s" % log.stderr, "[STDOUT]\n%s" % log.stdout, "[SCRIPT]\n%s" % log.script, "[TRACEBACK]\n%s" % log.traceback, ]) html_message = '\n\n'.join([ '

Exit code %s

' % log.exit_code, '

Stderr

' '
%s
' % escape(log.stderr), '

Stdout

' '
%s
' % escape(log.stdout), '

Script

' '
%s
' % escape(log.script), '

Traceback

' '
%s
' % escape(log.traceback), ]) mail_admins(subject, message, html_message=html_message) def message_user(request, logs): total = len(logs) successes = [ log for log in logs if log.state == log.SUCCESS ] successes = len(successes) errors = total-successes if errors: msg = 'backends have' if errors > 1 else 'backend has' msg = _("%d out of %d {0} fail to execute".format(msg)) messages.warning(request, msg % (errors, total)) else: msg = 'backends have' if successes > 1 else 'backend has' msg = _("%d {0} been successfully executed".format(msg)) messages.success(request, msg % successes)