script_result.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. {% extends 'base.html' %}
  2. {% load helpers %}
  3. {% load form_helpers %}
  4. {% load log_levels %}
  5. {% load static %}
  6. {% block title %}{{ script }} - {{ result.get_status_display }}{% endblock %}
  7. {% block content %}
  8. <div class="row noprint">
  9. <div class="col-md-12">
  10. <ol class="breadcrumb">
  11. <li><a href="{% url 'extras:script_list' %}">Scripts</a></li>
  12. <li><a href="{% url 'extras:script_list' %}#module.{{ script.module }}">{{ script.module|bettertitle }}</a></li>
  13. <li><a href="{% url 'extras:script' module=script.module name=class_name %}">{{ script }}</a></li>
  14. <li>{{ result.created }}</li>
  15. </ol>
  16. </div>
  17. </div>
  18. <h1>{{ script }}</h1>
  19. <p>{{ script.Meta.description }}</p>
  20. <ul class="nav nav-tabs" role="tablist">
  21. <li role="presentation" class="active">
  22. <a href="#log" role="tab" data-toggle="tab" class="active">Log</a>
  23. </li>
  24. <li role="presentation">
  25. <a href="#output" role="tab" data-toggle="tab">Output</a>
  26. </li>
  27. <li role="presentation">
  28. <a href="#source" role="tab" data-toggle="tab">Source</a>
  29. </li>
  30. </ul>
  31. <div class="tab-content">
  32. <p>
  33. Run: <strong>{{ result.created }}</strong>
  34. {% if result.completed %}
  35. Duration: <strong>{{ result.duration }}</strong>
  36. {% else %}
  37. <img id="pending-result-loader" src="{% static 'img/ajax-loader.gif' %}" />
  38. {% endif %}
  39. <span id="pending-result-label">{% include 'extras/inc/job_label.html' with result=result %}</span>
  40. </p>
  41. <div role="tabpanel" class="tab-pane active" id="log">
  42. {% if result.completed and result.status != 'errored' %}
  43. <div class="row">
  44. <div class="col-md-12">
  45. <div class="panel panel-default">
  46. <div class="panel-heading">
  47. <strong>Script Log</strong>
  48. </div>
  49. <table class="table table-hover panel-body">
  50. <tr>
  51. <th>Line</th>
  52. <th>Level</th>
  53. <th>Message</th>
  54. </tr>
  55. {% for log in result.data.log %}
  56. <tr>
  57. <td>{{ forloop.counter }}</td>
  58. <td>{% log_level log.status %}</td>
  59. <td class="rendered-markdown">{{ log.message|render_markdown }}</td>
  60. </tr>
  61. {% empty %}
  62. <tr>
  63. <td colspan="3" class="text-center text-muted">
  64. No log output
  65. </td>
  66. </tr>
  67. {% endfor %}
  68. </table>
  69. {% if execution_time %}
  70. <div class="panel-footer text-right text-muted">
  71. <small>Exec time: {{ execution_time|floatformat:3 }}s</small>
  72. </div>
  73. {% endif %}
  74. </div>
  75. </div>
  76. </div>
  77. {% elif result.stats == 'errored' %}
  78. <div class="row">
  79. <div class="col-md-12">
  80. <div class="well">Error during script execution</div>
  81. </div>
  82. </div>
  83. {% else %}
  84. <div class="row">
  85. <div class="col-md-12">
  86. <div class="well">Pending results</div>
  87. </div>
  88. </div>
  89. {% endif %}
  90. </div>
  91. <div role="tabpanel" class="tab-pane" id="output">
  92. <pre>{{ result.data.output }}</pre>
  93. </div>
  94. <div role="tabpanel" class="tab-pane" id="source">
  95. <p><code>{{ script.filename }}</code></p>
  96. <pre>{{ script.source }}</pre>
  97. </div>
  98. </div>
  99. {% endblock %}
  100. {% block javascript %}
  101. <script type="text/javascript">
  102. {% if not result.completed %}
  103. var pending_result_id = {{ result.pk }};
  104. {% else %}
  105. var pending_result_id = null;
  106. {% endif %}
  107. function jobTerminatedAction(){
  108. refreshWindow()
  109. }
  110. </script>
  111. <script src="{% static 'js/job_result.js' %}?v{{ settings.VERSION }}"
  112. onerror="window.location='{% url 'media_failure' %}?filename=js/job_result.js'"></script>
  113. {% endblock %}