diff options
-rw-r--r-- | date.txt | 2 | ||||
-rw-r--r-- | experiment/views.py | 2 | ||||
-rw-r--r-- | myadmin/urls.py | 1 | ||||
-rw-r--r-- | myadmin/views.py | 37 | ||||
-rw-r--r-- | new.csv | 2 | ||||
-rw-r--r-- | templates/admin/testexp.html | 43 |
6 files changed, 81 insertions, 6 deletions
@@ -1 +1 @@ -Fri May 26 00:00:46 IST 2017 +Fri May 26 14:56:51 IST 2017 diff --git a/experiment/views.py b/experiment/views.py index 685c2e2..cf507a7 100644 --- a/experiment/views.py +++ b/experiment/views.py @@ -200,7 +200,7 @@ def log_data(sbhs, mid, experiment_id, heat=None, fan=None, temp=None): if temp is None: temp = sbhs.getTemp() - data = "%d %s %s %s\n" % (int(time.time()), str(heat), str(fan), str(temp)) + data = "%s %s %s %s\n" % (datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(heat), str(fan), str(temp)) experiment_logfile = Experiment.objects.get(id=experiment_id).log global_logfile = settings.SBHS_GLOBAL_LOG_DIR + "/" + str(mid) + ".log" with open(global_logfile, "a") as global_loghandler, open(experiment_logfile, "a") as experiment_loghandler: diff --git a/myadmin/urls.py b/myadmin/urls.py index c1831e5..4e929c7 100644 --- a/myadmin/urls.py +++ b/myadmin/urls.py @@ -11,6 +11,7 @@ urlpatterns = [ url(r'^admin/resetdevice/?$', views.reset_device, name='admin_reset_device'), url(r'^admin/setdevice/?$', views.set_device_params, name='admin_set_device'), url(r'^admin/gettemp/?$', views.get_device_temp, name='admin_get_temp'), + url(r'^admin/monitor/?$', views.monitor_experiment, name='admin_monitor'), url(r'^admin/toggle_allotment_mode/?$', views.toggle_allotment_mode, name='admin_toggle_allotment_mode'), diff --git a/myadmin/views.py b/myadmin/views.py index 9e9c314..b4a4f33 100644 --- a/myadmin/views.py +++ b/myadmin/views.py @@ -2,7 +2,7 @@ from django.shortcuts import render, redirect from django.http import Http404,HttpResponse from django.contrib.auth.decorators import login_required from django.views.decorators.csrf import csrf_exempt -from sbhs_server.tables.models import Board, Booking, Slot +from sbhs_server.tables.models import Board, Booking, Slot, Experiment from sbhs_server import settings,sbhs import subprocess,json,serial,os, datetime # Create your views here. @@ -94,6 +94,41 @@ def testing(req): return render(req, 'admin/testexp.html', {"boards": boards, "allotment_mode": allotment_mode, "mids": current_mids}) @csrf_exempt +def monitor_experiment(req): + checkadmin(req) + try: + mid = int(req.POST.get("mid")) + except Exception as e: + return HttpResponse(json.dumps({"status_code":400, "message":"Invalid parameters"}), content_type="application/json") + + now = datetime.datetime.now() + current_slot_id = Slot.objects.filter(start_hour=now.hour, + start_minute__lt=now.minute, + end_minute__gt=now.minute) + + current_slot_id = -1 if not current_slot_id else current_slot_id[0].id + + try: + current_booking = Booking.objects.get(slot_id=current_slot_id, + booking_date=datetime.date.today(), + account__board__mid=mid) + except Exception as e: + return HttpResponse(json.dumps({"status_code":400, "message":"Invalid MID"}), content_type="application/json") + + current_booking_id, current_user = current_booking.id, current_booking.account.username + + logfile = Experiment.objects.get(booking_id=current_booking_id).log + + # get last 50 lines from logs + stdin,stdout = os.popen2("tail -n 10 "+logfile) + stdin.close() + logs = stdout.readlines(); stdout.close() + logs = "".join(logs) + + data = {"user": current_user, "logs": logs} + return HttpResponse(json.dumps({"status_code":200, "message":data}), content_type="application/json") + +@csrf_exempt def reset_device(req): """Resets the device to fan = 100 and heat = 0 Takes mid as paramter @@ -4695,3 +4695,5 @@ 2017-05-25 23:58:31.794913 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True 2017-05-25 23:58:55.790097 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 2017-05-26 00:00:46.763190 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True +2017-05-26 14:55:45.419017 True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True True +2017-05-26 14:56:51.481469 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True diff --git a/templates/admin/testexp.html b/templates/admin/testexp.html index 39291fa..052cfe9 100644 --- a/templates/admin/testexp.html +++ b/templates/admin/testexp.html @@ -63,7 +63,9 @@ </div> <div class="span5" id="monitor-logs"> - <span>chal raha hain bhai</span> + <strong><p id="username"></p></strong> + <p id="log-data" style="word-spacing: 4em"></p> + <button class="btn btn-primary" onclick="getLogs()">Refresh Logs</button> </div> </div> @@ -150,7 +152,7 @@ } }); } - var mydata; + function getTemp() { var selected_machine = document.getElementsByClassName("highlight"); if (selected_machine.length == 0) { @@ -167,7 +169,6 @@ }); request.done(function(data){ - mydata = data; if (data.status_code == 200) { document.getElementById("temp").value = data.message; } @@ -176,6 +177,42 @@ } }); } + + function getLogs() { + var selected_machine = document.getElementsByClassName("highlight"); + if (selected_machine.length == 0) { + alert("Please select a machine first"); + return; + } + var selected_mid = selected_machine[0].getElementsByTagName('td')[0].innerHTML; + var request = $.ajax({ + url : BASE_URL + '/admin/monitor', + method : 'POST', + data : { + 'mid' : selected_mid + } + }); + + header = "<th>Time</th><th>Fan</th><th>Heat</th><th>Temp</th>" + request.done(function(data){ + if (data.status_code == 200) { + console.log(data.message.logs.replace("/\n/g", "<br/>")); + document.getElementById("username").innerHTML = "User : " + data.message.user; + document.getElementById("log-data").innerHTML = "<pre>Date Time Heater Fan Temp</pre>" + data.message.logs.replace(new RegExp("\n","g"), "<br/>"); + } + else { + alert(data.status_code); + } + }); + } + + // update status of ongoing experiments + setInterval(function() { + var now = new Date(); + if (now.getMinutes() == 56 || now.getMinutes() == 1) { + location.reload(); + } + }, 60000); </script> {% endblock %} |