diff --git a/skwissh/static/skwissh/javascripts/plots.js b/skwissh/static/skwissh/javascripts/plots.js index 35a98e2..bdcb7cc 100644 --- a/skwissh/static/skwissh/javascripts/plots.js +++ b/skwissh/static/skwissh/javascripts/plots.js @@ -13,7 +13,8 @@ function refreshGraph(url, period, graphtype, probe_id, display_name, labels, un success : function(mesures) { if (mesures.length === 0) showError("No data found for sensor \'" + display_name + "\'.", probe_id); - updateGraph(mesures, graphtype, probe_id, labels, units, period); + else + updateGraph(mesures, graphtype, probe_id, labels, units, period); }, error : function(mesures) { showError("An error occured while building sensor graph \'" + display_name + "\'.", probe_id); diff --git a/skwissh/urls.py b/skwissh/urls.py index 63ac86d..fdc59da 100644 --- a/skwissh/urls.py +++ b/skwissh/urls.py @@ -66,7 +66,10 @@ def get_groups(): url(r'^mesures/(\d+)/(\d+)/(\w+)/$', 'skwissh.views.mesures', name='mesures'), # Ajax for Android - url(r'^servers/$', 'skwissh.views.servers', name='servers'), + url(r'^graphtypes/$', 'skwissh.views.graphtypes', name='graphtypes'), + url(r'^server_groups/$', 'skwissh.views.server_groups', name='server-groups'), + url(r'^servers/(\d+)/$', 'skwissh.views.servers', name='servers'), + url(r'^sensors/(\d+)/$', 'skwissh.views.sensors', name='sensors'), ) if settings.DEBUG: diff --git a/skwissh/views.py b/skwissh/views.py index 548e346..e497c84 100644 --- a/skwissh/views.py +++ b/skwissh/views.py @@ -12,7 +12,6 @@ get_probe_list_context_data from skwissh.models import Server, Measure, ServerGroup, Probe, MeasureDay, \ MeasureWeek, MeasureMonth, GraphType -from skwissh.urls import staff_required import datetime @@ -67,7 +66,7 @@ def mesures(request, server_id, probe_id, period): probe = get_object_or_404(Probe, pk=probe_id) server = get_object_or_404(Server, pk=server_id) now = datetime.datetime.utcnow().replace(tzinfo=utc) - if period == 'last': + if period == 'last' or probe.graph_type.name == "text": data = Measure.objects.filter(server=server, probe=probe)[0:1] elif period == 'hour': data = Measure.objects.filter(server=server, probe=probe, timestamp__gte=now - datetime.timedelta(hours=1)) @@ -82,6 +81,49 @@ def mesures(request, server_id, probe_id, period): return HttpResponseServerError() -#@staff_required -def servers(request): - return HttpResponse(serializers.serialize('json', Server.objects.all().select_related()), 'application/javascript') +@login_required +@cache_page(60) +def server_groups(request): + if request.is_ajax(): + return HttpResponse(serializers.serialize('json', ServerGroup.objects.all()), 'application/javascript') + else: + return HttpResponseServerError() + + +@login_required +@cache_page(60) +def servers(request, group_id): + if request.is_ajax(): + if group_id == '999999': + servers = Server.objects.filter(servergroup__isnull=True) + else: + server_group = ServerGroup.objects.get(pk=group_id) + servers = Server.objects.filter(servergroup=server_group) + + for server in servers: + server.ip = "you_should_not_see_that_hahaha" + server.username = "you_should_not_see_that_hahaha" + server.password = "you_should_not_see_that_hahaha" + + return HttpResponse(serializers.serialize('json', servers), 'application/javascript') + else: + return HttpResponseServerError() + + +@login_required +@cache_page(60) +def sensors(request, server_id): + if request.is_ajax(): + server = Server.objects.get(pk=server_id) + return HttpResponse(serializers.serialize('json', Probe.objects.all().filter(server=server)), 'application/javascript') + else: + return HttpResponseServerError() + + +@login_required +@cache_page(60) +def graphtypes(request): + if request.is_ajax(): + return HttpResponse(serializers.serialize('json', GraphType.objects.all()), 'application/javascript') + else: + return HttpResponseServerError()