From fe407193c200e03070928c1e2c1a6e067d32893d Mon Sep 17 00:00:00 2001 From: coderick14 Date: Wed, 17 May 2017 15:40:18 +0530 Subject: Upgrade to Django 1.11 - Database integration yet to be tested --- myadmin/__init__.py | 0 myadmin/admin.py | 3 +++ myadmin/models.py | 3 +++ myadmin/tests.py | 3 +++ myadmin/urls.py | 12 +++++++++ myadmin/views.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 myadmin/__init__.py create mode 100644 myadmin/admin.py create mode 100644 myadmin/models.py create mode 100644 myadmin/tests.py create mode 100644 myadmin/urls.py create mode 100644 myadmin/views.py (limited to 'myadmin') diff --git a/myadmin/__init__.py b/myadmin/__init__.py new file mode 100644 index 0000000..e69de29 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 -- cgit