diff options
author | coderick14 | 2017-05-17 15:40:18 +0530 |
---|---|---|
committer | coderick14 | 2017-05-17 15:41:00 +0530 |
commit | fe407193c200e03070928c1e2c1a6e067d32893d (patch) | |
tree | 1c492aa814754b5db5d644c769f5382306217298 /myadmin | |
parent | 9a1393e8470d855762e699abca9911b9cdae6a7d (diff) | |
download | SBHS-2018-Rpi-fe407193c200e03070928c1e2c1a6e067d32893d.tar.gz SBHS-2018-Rpi-fe407193c200e03070928c1e2c1a6e067d32893d.tar.bz2 SBHS-2018-Rpi-fe407193c200e03070928c1e2c1a6e067d32893d.zip |
Upgrade to Django 1.11
- Database integration yet to be tested
Diffstat (limited to 'myadmin')
-rw-r--r-- | myadmin/__init__.py | 0 | ||||
-rw-r--r-- | myadmin/admin.py | 3 | ||||
-rw-r--r-- | myadmin/models.py | 3 | ||||
-rw-r--r-- | myadmin/tests.py | 3 | ||||
-rw-r--r-- | myadmin/urls.py | 12 | ||||
-rw-r--r-- | myadmin/views.py | 75 |
6 files changed, 96 insertions, 0 deletions
diff --git a/myadmin/__init__.py b/myadmin/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/myadmin/__init__.py diff --git a/myadmin/admin.py b/myadmin/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/myadmin/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/myadmin/models.py b/myadmin/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/myadmin/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/myadmin/tests.py b/myadmin/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/myadmin/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/myadmin/urls.py b/myadmin/urls.py new file mode 100644 index 0000000..0381567 --- /dev/null +++ b/myadmin/urls.py @@ -0,0 +1,12 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^admin/?$', views.index, name='admin_index'), + url(r'^admin/bookings/?$', views.booking_index, name='admin_bookings'), + url(r'^admin/webcam/?$', views.webcam_index, name='admin_webcam'), + url(r'^admin/profile/([0-9]+)/?$', views.profile, name='admin_profile'), + + url(r'^admin/toggle_allotment_mode/?$', views.toggle_allotment_mode, name='admin_toggle_allotment_mode'), +]
\ No newline at end of file diff --git a/myadmin/views.py b/myadmin/views.py new file mode 100644 index 0000000..8289cfa --- /dev/null +++ b/myadmin/views.py @@ -0,0 +1,75 @@ +from django.shortcuts import render, redirect +from django.http import Http404 +from django.contrib.auth.decorators import login_required +from sbhs_server.tables.models import Board, Booking +from sbhs_server import settings +import subprocess +# Create your views here. + +def checkadmin(req): + if not req.user.is_admin: + raise Http404 + +@login_required(redirect_field_name=None) +def index(req): + checkadmin(req) + boards = Board.objects.order_by('online').all() + allotment_mode = "Random" if Board.can_do_random_allotment() else "Workshop" + return render(req, 'admin/index.html', {"boards": boards, "allotment_mode": allotment_mode}) + +@login_required(redirect_field_name=None) +def toggle_allotment_mode(req): + checkadmin(req) + Board.toggle_random_allotment() + return redirect(index) + +@login_required(redirect_field_name=None) +def booking_index(req): + checkadmin(req) + bookings = Booking.objects.order_by('-booking_date').select_related()[:50] + return render(req, 'admin/booking_index.html', {"bookings": bookings}) + +@login_required(redirect_field_name=None) +def webcam_index(req): + checkadmin(req) + boards = Board.objects.all() + return render(req, 'admin/webcam_index.html', {"boards": boards}) + +@login_required(redirect_field_name=None) +def profile(req, mid): + checkadmin(req) + try: + filename = settings.SBHS_GLOBAL_LOG_DIR + "/" + mid + ".log" + f = open(filename, "r") + f.close() + except: + raise Http404 + + delta_T = 1000 + data = subprocess.check_output("tail -n %d %s" % (delta_T, filename), shell=True) + data = data.split("\n") + plot = [] + heatcsv = "" + fancsv = "" + tempcsv = "" + + for t in xrange(len(data)): + line = data[t] + entry = line.strip().split(" ") + try: + plot.append([int(i) for i in entry[0:-1] + [float(entry[-1])]]) + heatcsv += "%d,%s\\n" % (t+1, entry[1]) + fancsv += "%d,%s\\n" % (t+1, entry[2]) + tempcsv += "%d,%s\\n" % (t+1, entry[3]) + except: + continue + + plot = zip(*plot) # transpose + + return render(req, "admin/profile.html", { + "mid": mid, + "delta_T": delta_T, + "heat": heatcsv, + "fan": fancsv, + "temp": tempcsv + })
\ No newline at end of file |