From 81667305df2bc148e4ca6247ad3b2d12b30e660c Mon Sep 17 00:00:00 2001
From: adityacp
Date: Mon, 9 Mar 2020 17:10:10 +0530
Subject: Download course progress
---
yaksh/models.py | 3 +++
yaksh/templates/yaksh/course_progress.html | 13 +++++++++++--
yaksh/urls.py | 2 ++
yaksh/views.py | 25 +++++++++++++++++++++++++
4 files changed, 41 insertions(+), 2 deletions(-)
(limited to 'yaksh')
diff --git a/yaksh/models.py b/yaksh/models.py
index e161543..072c1b5 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -648,6 +648,9 @@ class LearningUnit(models.Model):
order=self.order, type="lesson", lesson=new_lesson)
return new_unit
+ def __str__(self):
+ return self.lesson.name if self.lesson else self.quiz.description
+
###############################################################################
class LearningModule(models.Model):
diff --git a/yaksh/templates/yaksh/course_progress.html b/yaksh/templates/yaksh/course_progress.html
index a833c92..826f84b 100644
--- a/yaksh/templates/yaksh/course_progress.html
+++ b/yaksh/templates/yaksh/course_progress.html
@@ -4,10 +4,19 @@
{% if student_details %}
Course Progress
-
- Number Of Students: {{ students_no }}
+
+
+
+ Number Of Students: {{ students_no }}
+
+
+
{% include "yaksh/paginator.html" %}
diff --git a/yaksh/urls.py b/yaksh/urls.py
index 49c3d4f..b53d335 100644
--- a/yaksh/urls.py
+++ b/yaksh/urls.py
@@ -218,4 +218,6 @@ urlpatterns = [
views.get_course_modules, name="get_course_modules"),
url(r'^manage/course/teachers/(?P\d+)',
views.course_teachers, name="course_teachers"),
+ url(r'^manage/download/course/progress/(?P\d+)',
+ views.download_course_progress, name="download_course_progress"),
]
diff --git a/yaksh/views.py b/yaksh/views.py
index 5d2d560..58fe6e2 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -3155,3 +3155,28 @@ def get_course_modules(request, course_id):
modules = course.get_learning_modules()
context = {"modules": modules, "is_modules": True, "course": course}
return my_render_to_response(request, 'yaksh/course_detail.html', context)
+
+
+@login_required
+@email_verified
+def download_course_progress(request, course_id):
+ user = request.user
+ if not is_moderator(user):
+ raise Http404('You are not allowed to view this page!')
+ course = get_object_or_404(Course, pk=course_id)
+ if not course.is_creator(user) and not course.is_teacher(user):
+ raise Http404('This course does not belong to you')
+ students = course.students.order_by("-id")
+ stud_details = [(student.get_full_name(), course.get_grade(student),
+ course.get_completion_percent(student),
+ course.get_current_unit(student))
+ for student in students]
+ response = HttpResponse(content_type='text/csv')
+ response['Content-Disposition'] = 'attachment; filename="{0}.csv"'.format(
+ (course.name).lower().replace(' ', '_'))
+ header = ['Name', 'Grade', 'Completion Percent', 'Current Unit']
+ writer = csv.writer(response)
+ writer.writerow(header)
+ for student in stud_details:
+ writer.writerow(student)
+ return response
--
cgit