summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
diff options
context:
space:
mode:
authorAlejandro Sirgo Rica <asirgo@soleta.eu>2024-09-10 15:21:03 +0200
committerAlejandro Sirgo Rica <asirgo@soleta.eu>2024-09-11 12:24:44 +0200
commit696a81fd1147e301dd69609558da387f17c57228 (patch)
treea11a1c47b56329af844eaa81c7b68adfec7842cf /ogcp/views.py
parent6b33268b5c03db29cb003acb4e2042c9254402d2 (diff)
templates: add name and status to client list
Add a client name column to the client list view accessed through the Dashboard. Add status column to the client list. Move client status leyend into a separate file. Show the client status leyend in client list. Fix the 0 link speed conditional. Reuse the data returned by get_scopes() to reduce the number of requests.
Diffstat (limited to 'ogcp/views.py')
-rw-r--r--ogcp/views.py41
1 files changed, 28 insertions, 13 deletions
diff --git a/ogcp/views.py b/ogcp/views.py
index c24cb73..9a0c8e2 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -222,10 +222,12 @@ def get_client_setup_json():
def get_clients(state_filter=None):
responses = multi_request('get', '/clients')
-
clients_list = []
for r in responses:
- clients_list = clients_list + r['json']['clients']
+ req_clients = r['json']['clients']
+ for client in req_clients:
+ client['server'] = r['server']
+ clients_list = clients_list + req_clients
clients = {}
clients['clients'] = clients_list
@@ -600,21 +602,34 @@ def get_client_mac():
return jsonify(pretty_mac)
-@app.route('/client/list', methods=['GET'])
-@login_required
-def client_list():
- clients_response = multi_request('get', '/clients')
+def get_server_data_from_scopes(scopes, clients):
servers_data = {}
- for i in clients_response:
- server_id = i['server'].id
+
+ ip_to_name = {ip: c['name'] for c in parse_scopes_from_tree(scopes, 'computer') for ip in c['ip']}
+
+ for client in clients['clients']:
+ client['name'] = ip_to_name[client['addr']]
+ server_id = client['server'].id
if server_id not in servers_data:
- servers_data[server_id] = {}
- servers_data[server_id]['clients'] = i['json']['clients']
- for server in servers:
- if server.id == server_id:
- servers_data[server_id]['name'] = server.name
+ servers_data[server_id] = {'clients': []}
+ for server in servers:
+ if server.id == server_id:
+ servers_data[server_id]['name'] = server.name
+
+ servers_data[server_id]['clients'].append(client)
+
+ for server_id in servers_data:
+ servers_data[server_id]['clients'].sort(key=lambda x: x['name'])
+
+ return servers_data
+
+@app.route('/client/list', methods=['GET'])
+@login_required
+def client_list():
scopes, clients = get_scopes()
+ servers_data = get_server_data_from_scopes(scopes, clients)
+
selected_clients = list(get_selected_clients(scopes['scope']).items())
return render_template('client_list.html', servers_data=servers_data,