From c8b2b4d464ff1fba507862a9e0fe2bf5499ef298 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Fri, 27 Jul 2012 10:14:07 -0400 Subject: [PATCH 1/3] Miniture staff dashboard. Not really tested, but should be safe to merge --- lms/djangoapps/dashboard/views.py | 29 +++++++++++++++++++++++++++++ lms/urls.py | 1 + 2 files changed, 30 insertions(+) create mode 100644 lms/djangoapps/dashboard/views.py diff --git a/lms/djangoapps/dashboard/views.py b/lms/djangoapps/dashboard/views.py new file mode 100644 index 0000000000..ba6c8ca152 --- /dev/null +++ b/lms/djangoapps/dashboard/views.py @@ -0,0 +1,29 @@ +# Create your views here. +import json +from datetime import datetime +from django.http import HttpResponse, Http404 + +def dictfetchall(cursor): + '''Returns all rows from a cursor as a dict. + Borrowed from Django documentation''' + desc = cursor.description + return [ + dict(zip([col[0] for col in desc], row)) + for row in cursor.fetchall() + ] + +def dashboard(request): + """ + Simple view that a loadbalancer can check to verify that the app is up + """ + if not request.user.is_staff: + raise Http404 + + query = "select count(user_id) as students, course_id from student_courseenrollment group by course_id order by students desc" + + from django.db import connection + cursor = connection.cursor() + results = dictfetchall(cursor.execute(query)) + + + return HttpResponse(json.dumps(results, indent=4)) diff --git a/lms/urls.py b/lms/urls.py index 0785cd96d0..3667397c8c 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -13,6 +13,7 @@ if settings.DEBUG: urlpatterns = ('', url(r'^$', 'student.views.index', name="root"), # Main marketing page, or redirect to courseware url(r'^dashboard$', 'student.views.dashboard', name="dashboard"), + url(r'^admin_dashboard$', 'dashboard.views.dashboard'), url(r'^change_email$', 'student.views.change_email_request'), url(r'^email_confirm/(?P[^/]*)$', 'student.views.confirm_email_change'), From 6db146f6b49a1a5310cf1be04bace51090ec5fba Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Fri, 27 Jul 2012 10:19:51 -0400 Subject: [PATCH 2/3] Missing files --- lms/djangoapps/dashboard/__init__.py | 0 lms/djangoapps/dashboard/models.py | 3 +++ lms/djangoapps/dashboard/tests.py | 16 ++++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 lms/djangoapps/dashboard/__init__.py create mode 100644 lms/djangoapps/dashboard/models.py create mode 100644 lms/djangoapps/dashboard/tests.py diff --git a/lms/djangoapps/dashboard/__init__.py b/lms/djangoapps/dashboard/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lms/djangoapps/dashboard/models.py b/lms/djangoapps/dashboard/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/lms/djangoapps/dashboard/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/lms/djangoapps/dashboard/tests.py b/lms/djangoapps/dashboard/tests.py new file mode 100644 index 0000000000..501deb776c --- /dev/null +++ b/lms/djangoapps/dashboard/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) From 2df7e02e310516bbf2649988edb58e79b829ccf4 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Fri, 27 Jul 2012 10:23:44 -0400 Subject: [PATCH 3/3] Fixed comment --- lms/djangoapps/dashboard/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/dashboard/views.py b/lms/djangoapps/dashboard/views.py index ba6c8ca152..5cf3fa72c1 100644 --- a/lms/djangoapps/dashboard/views.py +++ b/lms/djangoapps/dashboard/views.py @@ -14,7 +14,9 @@ def dictfetchall(cursor): def dashboard(request): """ - Simple view that a loadbalancer can check to verify that the app is up + Quick hack to show staff enrollment numbers. This should be + replaced with a real dashboard later. This version is a short-term + bandaid for the next couple weeks. """ if not request.user.is_staff: raise Http404