fix: make it possible to view only the selected client on the live-monitoring view (see #54)

This commit is contained in:
ziirish 2015-04-01 20:21:36 +02:00
parent 6d87b78f11
commit 9512b3f76c
3 changed files with 18 additions and 6 deletions

View file

@ -8,7 +8,7 @@ from flask.ext.restful import reqparse, Resource
from flask.ext.login import current_user, login_required
from flask import jsonify, make_response
@api.resource('/api/running-clients.json', '/api/<server>/running-clients.json')
@api.resource('/api/running-clients.json', '/api/<server>/running-clients.json', '/api/<client>/running-clients.json', '/api/<server>/<client>/running-clients.json')
class RunningClients(Resource):
def __init__(self):
@ -16,13 +16,25 @@ class RunningClients(Resource):
self.parser.add_argument('server', type=str)
@login_required
def get(self, server=None):
def get(self, client=None, server=None):
"""
API: running_clients
:returns: a list of running clients
"""
if not server:
server = self.parser.parse_args()['server']
if client:
if bui.acl_handler:
if not bui.acl_handler.get_acl().is_admin(current_user.name) and not bui.acl_handler.get_acl().is_client_allowed(current_user.name, client, server):
r = []
return jsonify(results=r)
if bui.cli.is_backup_running(client, server):
r = [bui.cli.get_client(client, server)]
return jsonify(results=r)
else:
r = []
return jsonify(results=r)
r = bui.cli.is_one_backup_running(server)
# Manage ACL
if bui.acl_handler and not bui.acl_handler.get_acl().is_admin(current_user.name):

View file

@ -243,7 +243,7 @@ def client(server=None, name=None):
if not server:
server = request.args.get('server')
if bui.cli.is_backup_running(c, agent=server):
return redirect(url_for('live_monitor', name=name, server=server))
return redirect(url_for('live_monitor', name=c, server=server))
return render_template('client.html', client=True, overview=True, cname=c, server=server)
@app.route('/clients', methods=['GET'])

View file

@ -48,7 +48,7 @@ _parse_live_result = function(data, serv) {
_live = function() {
urls = Array();
{% for s in config.SERVERS -%}
urls.push({'url': '{{ api.url_for(RunningClients) }}?server={{ s }}', 'serv': '{{ s }}'});
urls.push({'url': '{{ api.url_for(RunningClients, client=cname) }}?server={{ s }}', 'serv': '{{ s }}'});
{% endfor -%}
html = '';
$.each(urls, function(i, rec) {
@ -69,9 +69,9 @@ _live = function() {
{% else -%}
_live = function() {
{% if config.STANDALONE -%}
url = '{{ api.url_for(RunningClients) }}';
url = '{{ api.url_for(RunningClients, client=cname) }}';
{% else -%}
url = '{{ api.url_for(RunningClients, server=server) }}';
url = '{{ api.url_for(RunningClients, server=server, client=cname) }}';
{% endif -%}
html = ''
$.getJSON(url, function(data) {