script_list.html 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. {% extends 'base/layout.html' %}
  2. {% load buttons %}
  3. {% load helpers %}
  4. {% block title %}Scripts{% endblock %}
  5. {% block controls %}
  6. <div class="controls">
  7. <div class="control-group">
  8. {% block extra_controls %}{% endblock %}
  9. {% add_button model %}
  10. </div>
  11. </div>
  12. {% endblock controls %}
  13. {% block tabs %}
  14. <ul class="nav nav-tabs px-3">
  15. <li class="nav-item" role="presentation">
  16. <a class="nav-link active" role="tab">Scripts</a>
  17. </li>
  18. </ul>
  19. {% endblock tabs %}
  20. {% block content-wrapper %}
  21. <div class="tab-content">
  22. {% for module in script_modules %}
  23. <div class="card">
  24. <h5 class="card-header" id="module{{ module.pk }}">
  25. {% if perms.extras.delete_scriptmodule %}
  26. <div class="float-end">
  27. <a href="{% url 'extras:scriptmodule_delete' pk=module.pk %}" class="btn btn-danger btn-sm">
  28. <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete
  29. </a>
  30. </div>
  31. {% endif %}
  32. <i class="mdi mdi-file-document-outline"></i> {{ module }}
  33. </h5>
  34. <div class="card-body">
  35. {% include 'inc/sync_warning.html' with object=module %}
  36. <table class="table table-hover table-headings reports">
  37. <thead>
  38. <tr>
  39. <th width="250">Name</th>
  40. <th>Description</th>
  41. <th>Last Run</th>
  42. <th class="text-end">Status</th>
  43. </tr>
  44. </thead>
  45. <tbody>
  46. {% with jobs=module.get_latest_jobs %}
  47. {% for script_name, script_class in module.scripts.items %}
  48. <tr>
  49. <td>
  50. <a href="{% url 'extras:script' module=module.python_name name=script_name %}" name="script.{{ script_name }}">{{ script_class.name }}</a>
  51. </td>
  52. <td>
  53. {{ script_class.Meta.description|markdown|placeholder }}
  54. </td>
  55. {% with last_result=jobs|get_key:script_class.name %}
  56. {% if last_result %}
  57. <td>
  58. <a href="{% url 'extras:script_result' job_pk=last_result.pk %}">{{ last_result.created|annotated_date }}</a>
  59. </td>
  60. <td class="text-end">
  61. {% badge last_result.get_status_display last_result.get_status_color %}
  62. </td>
  63. {% else %}
  64. <td class="text-muted">Never</td>
  65. <td class="text-end">{{ ''|placeholder }}</td>
  66. {% endif %}
  67. {% endwith %}
  68. </tr>
  69. {% endfor %}
  70. {% endwith %}
  71. </tbody>
  72. </table>
  73. </div>
  74. </div>
  75. {% empty %}
  76. <div class="alert alert-info">
  77. <h4 class="alert-heading">No Scripts Found</h4>
  78. {% if perms.extras.add_scriptmodule %}
  79. Get started by <a href="{% url 'extras:scriptmodule_add' %}">creating a script</a> from an uploaded file or data source.
  80. {% endif %}
  81. </div>
  82. {% endfor %}
  83. </div>
  84. {% endblock content-wrapper %}