From e7c1bf6e36826612d322d9662644dd276c77a159 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Thu, 28 Feb 2019 07:59:56 +0100
Subject: [PATCH] Clean networks view

No need to use ajax to retrieve the content of simple tables.

For Ansible groups, it takes some time to retrieve the data due to the
list of hosts for each group to compute. We keep the ajax request so
that the page is displayed quickly. We might switch to server side
processing (like for hosts).

JIRA INFRA-860
---
 app/network/views.py               | 30 ++++--------------------------
 app/static/js/domains.js           |  7 -------
 app/static/js/scopes.js            |  7 -------
 app/templates/network/domains.html |  7 +++++++
 app/templates/network/scopes.html  | 12 ++++++++++++
 5 files changed, 23 insertions(+), 40 deletions(-)

diff --git a/app/network/views.py b/app/network/views.py
index 8705dca..2636b81 100644
--- a/app/network/views.py
+++ b/app/network/views.py
@@ -507,7 +507,8 @@ def create_ansible_group():
 @bp.route("/domains")
 @login_required
 def list_domains():
-    return render_template("network/domains.html")
+    domains = models.Domain.query.all()
+    return render_template("network/domains.html", domains=domains)
 
 
 @bp.route("/domains/create", methods=("GET", "POST"))
@@ -533,7 +534,8 @@ def create_domain():
 @bp.route("/scopes")
 @login_required
 def list_scopes():
-    return render_template("network/scopes.html")
+    scopes = models.NetworkScope.query.all()
+    return render_template("network/scopes.html", scopes=scopes)
 
 
 @bp.route("/scopes/create", methods=("GET", "POST"))
@@ -703,30 +705,6 @@ def retrieve_ips(subnet, prefix):
     return jsonify(data=data)
 
 
-@bp.route("/_retrieve_scopes")
-@login_required
-def retrieve_scopes():
-    data = [
-        (
-            scope.name,
-            scope.description,
-            scope.first_vlan,
-            scope.last_vlan,
-            scope.supernet,
-            str(scope.domain),
-        )
-        for scope in models.NetworkScope.query.all()
-    ]
-    return jsonify(data=data)
-
-
-@bp.route("/_retrieve_domains")
-@login_required
-def retrieve_domains():
-    data = [(domain.name,) for domain in models.Domain.query.all()]
-    return jsonify(data=data)
-
-
 @bp.route("/_retrieve_groups")
 @login_required
 def retrieve_groups():
diff --git a/app/static/js/domains.js b/app/static/js/domains.js
index c0a567f..777943f 100644
--- a/app/static/js/domains.js
+++ b/app/static/js/domains.js
@@ -1,13 +1,6 @@
 $(document).ready(function() {
 
   var domains_table =  $("#domains_table").DataTable({
-    "ajax": function(data, callback, settings) {
-      $.getJSON(
-        $SCRIPT_ROOT + "/network/_retrieve_domains",
-        function(json) {
-          callback(json);
-        });
-    },
     "paging": false
   });
 
diff --git a/app/static/js/scopes.js b/app/static/js/scopes.js
index 28a2432..4bb6305 100644
--- a/app/static/js/scopes.js
+++ b/app/static/js/scopes.js
@@ -1,13 +1,6 @@
 $(document).ready(function() {
 
   var scopes_table =  $("#scopes_table").DataTable({
-    "ajax": function(data, callback, settings) {
-      $.getJSON(
-        $SCRIPT_ROOT + "/network/_retrieve_scopes",
-        function(json) {
-          callback(json);
-        });
-    },
     "paging": false
   });
 
diff --git a/app/templates/network/domains.html b/app/templates/network/domains.html
index 0284c5f..fa86984 100644
--- a/app/templates/network/domains.html
+++ b/app/templates/network/domains.html
@@ -24,6 +24,13 @@
         <th>Name</th>
       </tr>
     </thead>
+    <tbody>
+      {% for domain in domains %}
+        <tr>
+          <td>{{ domain.name }}</td>
+        </tr>
+      {% endfor %}
+    </tbody>
   </table>
   {%- endblock %}
 {%- endblock %}
diff --git a/app/templates/network/scopes.html b/app/templates/network/scopes.html
index a67676f..32a6b25 100644
--- a/app/templates/network/scopes.html
+++ b/app/templates/network/scopes.html
@@ -29,6 +29,18 @@
         <th>Default domain</th>
       </tr>
     </thead>
+    <tbody>
+      {% for scope in scopes %}
+        <tr>
+          <td>{{ scope.name }}</td>
+          <td>{{ scope.description }}</td>
+          <td>{{ scope.first_vlan }}</td>
+          <td>{{ scope.last_vlan }}</td>
+          <td>{{ scope.supernet }}</td>
+          <td>{{ scope.domain }}</td>
+        </tr>
+      {% endfor %}
+    </tbody>
   </table>
   {%- endblock %}
 {%- endblock %}
-- 
GitLab