From f7e141b14712b4b50080059d5127507dfd3535b9 Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Fri, 4 Dec 2015 14:39:19 -0500 Subject: [PATCH] Remove admin dashboard (AN-3351) --- lms/djangoapps/dashboard/views.py | 87 ------------------------------ lms/templates/admin_dashboard.html | 45 ---------------- lms/urls.py | 2 - 3 files changed, 134 deletions(-) delete mode 100644 lms/djangoapps/dashboard/views.py delete mode 100644 lms/templates/admin_dashboard.html diff --git a/lms/djangoapps/dashboard/views.py b/lms/djangoapps/dashboard/views.py deleted file mode 100644 index aca1fdcd9a..0000000000 --- a/lms/djangoapps/dashboard/views.py +++ /dev/null @@ -1,87 +0,0 @@ -"""View functions for the LMS Student dashboard""" -from django.http import Http404 -from edxmako.shortcuts import render_to_response -from django.db import connection - -from student.models import CourseEnrollment -from django.contrib.auth.models import User - - -def dictfetchall(cursor): - '''Returns a list of all rows from a cursor as a column: result dict. - Borrowed from Django documentation''' - desc = cursor.description - table = [] - table.append([col[0] for col in desc]) - - # ensure response from db is a list, not a tuple (which is returned - # by MySQL backed django instances) - rows_from_cursor = cursor.fetchall() - table = table + [list(row) for row in rows_from_cursor] - return table - - -def SQL_query_to_list(cursor, query_string): # pylint: disable=invalid-name - """Returns the raw result of the query""" - cursor.execute(query_string) - raw_result = dictfetchall(cursor) - return raw_result - - -def dashboard(request): - """ - Slightly less hackish hack to show staff enrollment numbers and other - simple queries. - - All queries here should be indexed and simple. Mostly, this means don't - touch courseware_studentmodule, as tempting as it may be. - - """ - if not request.user.is_staff: - raise Http404 - - # results are passed to the template. The template knows how to render - # two types of results: scalars and tables. Scalars should be represented - # as "Visible Title": Value and tables should be lists of lists where each - # inner list represents a single row of the table - results = {"scalars": {}, "tables": {}} - - # count how many users we have - results["scalars"]["Unique Usernames"] = User.objects.filter().count() - results["scalars"]["Activated Usernames"] = User.objects.filter(is_active=1).count() - - # count how many enrollments we have - results["scalars"]["Total Enrollments Across All Courses"] = CourseEnrollment.objects.filter(is_active=1).count() - - # establish a direct connection to the database (for executing raw SQL) - cursor = connection.cursor() - - # define the queries that will generate our user-facing tables - # table queries need not take the form of raw SQL, but do in this case since - # the MySQL backend for django isn't very friendly with group by or distinct - table_queries = {} - table_queries["course registrations (current enrollments)"] = """ - select - course_id as Course, - count(user_id) as Students - from student_courseenrollment - where is_active=1 - group by course_id - order by students desc;""" - table_queries["number of students in each number of classes"] = """ - select registrations as 'Registered for __ Classes' , - count(registrations) as Users - from (select count(user_id) as registrations - from student_courseenrollment - where is_active=1 - group by user_id) as registrations_per_user - group by registrations;""" - - # add the result for each of the table_queries to the results object - for query in table_queries.keys(): - cursor.execute(table_queries[query]) - results["tables"][query] = SQL_query_to_list(cursor, table_queries[query]) - - context = {"results": results} - - return render_to_response("admin_dashboard.html", context) diff --git a/lms/templates/admin_dashboard.html b/lms/templates/admin_dashboard.html deleted file mode 100644 index 5314881233..0000000000 --- a/lms/templates/admin_dashboard.html +++ /dev/null @@ -1,45 +0,0 @@ -<%namespace name='static' file='static_content.html'/> -<%! from django.utils.translation import ugettext as _ %> - -<%inherit file="main.html" /> - -
- -
- -
-

${_("{platform_name}-wide Summary").format(platform_name=settings.PLATFORM_NAME)}

- - % for key in results["scalars"]: - - - - - % endfor -
${key}${results["scalars"][key]}
-
- - % for table in results["tables"]: -
-
-

${table}

- - - % for column in results["tables"][table][0]: - - % endfor - - % for row in results["tables"][table][1:]: - - % for column in row: - - % endfor - - % endfor -
${column}
${column}
- -
- % endfor -
-
- diff --git a/lms/urls.py b/lms/urls.py index f0e820e79b..0f32ac6de8 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -29,8 +29,6 @@ urlpatterns = ( url(r'^login_ajax$', 'student.views.login_user', name="login"), url(r'^login_ajax/(?P[^/]*)$', 'student.views.login_user'), - url(r'^admin_dashboard$', 'dashboard.views.dashboard'), - url(r'^email_confirm/(?P[^/]*)$', 'student.views.confirm_email_change'), url(r'^event$', 'track.views.user_track'), url(r'^performance$', 'performance.views.performance_log'),