diff --git a/lms/djangoapps/instructor/views.py b/lms/djangoapps/instructor/views.py index a707506045..5ce256b275 100644 --- a/lms/djangoapps/instructor/views.py +++ b/lms/djangoapps/instructor/views.py @@ -383,6 +383,46 @@ def instructor_dashboard(request, course_id): user.groups.remove(group) track.views.server_track(request, 'remove-instructor {0}'.format(user), {}, page='idashboard') + #---------------------------------------- + # DataDump + + elif 'Download CSV of all student profile data' in action: + enrolled_students = User.objects.filter(courseenrollment__course_id=course_id).order_by('username') + profkeys = ['name', 'language', 'location', 'year_of_birth', 'gender', 'level_of_education', + 'mailing_address', 'goals'] + datatable = {'header': ['username', 'email'] + profkeys} + def getdat(u): + p = u.profile + return [u.username, u.email] + [getattr(p,x,'') for x in profkeys] + + datatable['data'] = [getdat(u) for u in enrolled_students] + datatable['title'] = 'Student profile data for course %s' % course_id + return return_csv('profiledata_%s.csv' % course_id, datatable) + + + elif 'Download CSV of all responses to problem' in action: + problem_to_dump = request.POST.get('problem_to_dump','') + + if problem_to_dump[-4:]==".xml": + problem_to_dump=problem_to_dump[:-4] + try: + (org, course_name, run)=course_id.split("/") + module_state_key="i4x://"+org+"/"+course_name+"/problem/"+problem_to_dump + smdat = StudentModule.objects.filter(course_id=course_id, + module_state_key=module_state_key) + smdat = smdat.order_by('student') + msg+="Found module to reset. " + except Exception as err: + msg+="Couldn't find module with that urlname. " + msg += "
%s" % escape(err) + smdat = [] + + if smdat: + datatable = {'header': ['username', 'state']} + datatable['data'] = [ [x.student.username, x.state] for x in smdat ] + datatable['title'] = 'Student state for problem %s' % problem_to_dump + return return_csv('student_state_from_%s.csv' % problem_to_dump, datatable) + #---------------------------------------- # Group management diff --git a/lms/templates/courseware/instructor_dashboard.html b/lms/templates/courseware/instructor_dashboard.html index 7b177c6b6c..a31ee0025e 100644 --- a/lms/templates/courseware/instructor_dashboard.html +++ b/lms/templates/courseware/instructor_dashboard.html @@ -64,6 +64,7 @@ function goto( mode) Admin | Forum Admin | Enrollment | + DataDump | Manage Groups ] @@ -269,6 +270,20 @@ function goto( mode) ##----------------------------------------------------------------------------- +%if modeflag.get('Data'): +
+ +
+Problem urlname: + + +
+