Просмотр исходного кода

#13666: Add is_valid property to Report class

Jeremy Stretch 2 лет назад
Родитель
Сommit
f9ceaad284

+ 7 - 0
netbox/extras/reports.py

@@ -135,6 +135,13 @@ class Report(object):
     def source(self):
         return inspect.getsource(self.__class__)
 
+    @property
+    def is_valid(self):
+        """
+        Indicates whether the report can be run.
+        """
+        return bool(self.test_methods)
+
     #
     # Logging methods
     #

+ 7 - 5
netbox/templates/extras/report.html

@@ -8,15 +8,17 @@
     {% if perms.extras.run_report %}
       <div class="row">
         <div class="col">
+          {% if not report.is_valid %}
+            <div class="alert alert-warning">
+              <i class="mdi mdi-alert"></i>
+              {% trans "This report is invalid and cannot be run." %}
+            </div>
+          {% endif %}
           <form action="{% url 'extras:report' module=report.module name=report.class_name %}" method="post" class="form-object-edit">
             {% csrf_token %}
             {% render_form form %}
             <div class="float-end">
-              <button type="submit" name="_run" class="btn btn-primary"
-              {% if not report.test_methods|length %}
-                disabled
-              {% endif %}
-              >
+              <button type="submit" name="_run" class="btn btn-primary"{% if not report.is_valid %} disabled{% endif %}>
                 {% if report.result %}
                   <i class="mdi mdi-replay"></i> {% trans "Run Again" %}
                 {% else %}

+ 10 - 8
netbox/templates/extras/report_list.html

@@ -68,16 +68,18 @@
                           </td>
                         {% else %}
                           <td class="text-muted">{% trans "Never" %}</td>
-                          {% if report.test_methods|length %}
-                            <td>{{ ''|placeholder }}</td>
-                          {% else %}
-                            <td>
-                              Invalid (no test methods found)
-                           </td>
-                          {% endif %}
+                          <td>
+                            {% if report.is_valid %}
+                              {{ ''|placeholder }}
+                            {% else %}
+                              <span class="badge bg-danger" title="{% trans "Report has no test methods" %}">
+                                {% trans "Invalid" %}
+                              </span>
+                            {% endif %}
+                          </td>
                         {% endif %}
                         <td>
-                          {% if perms.extras.run_report and report.test_methods|length %}
+                          {% if perms.extras.run_report and report.is_valid %}
                             <div class="float-end noprint">
                               <form action="{% url 'extras:report' module=report.module name=report.class_name %}" method="post">
                                 {% csrf_token %}