From acce9174639224234325c007f30d5679712e4c2c Mon Sep 17 00:00:00 2001 From: adityacp Date: Wed, 22 Nov 2017 12:02:49 +0530 Subject: Change forms.py, models.py, views.py, templates, templatetags - Add start_time, end_time enrollement in course form - Change get_quiz_details in course model - Add validation to check if course is active and not expired - Template changes for cleaner dashboard --- yaksh/forms.py | 3 +- yaksh/models.py | 2 +- yaksh/templates/yaksh/add_course.html | 4 +- yaksh/templates/yaksh/complete.html | 2 +- yaksh/templates/yaksh/courses.html | 2 +- yaksh/templates/yaksh/moderator_dashboard.html | 51 +++++++++++++++++--------- yaksh/templates/yaksh/question.html | 23 +++++------- yaksh/templates/yaksh/quizzes_user.html | 2 +- yaksh/templates/yaksh/show_video.html | 25 +++++-------- yaksh/templatetags/custom_filters.py | 6 +++ yaksh/views.py | 19 ++++++---- 11 files changed, 78 insertions(+), 61 deletions(-) diff --git a/yaksh/forms.py b/yaksh/forms.py index 25eb2c5..52e6a12 100644 --- a/yaksh/forms.py +++ b/yaksh/forms.py @@ -272,7 +272,8 @@ class CourseForm(forms.ModelForm): class Meta: model = Course - fields = ['name', 'enrollment', 'active', 'code', 'instructions'] + fields = ['name', 'enrollment', 'active', 'code', 'instructions', + 'start_enroll_time', 'end_enroll_time'] class ProfileForm(forms.ModelForm): diff --git a/yaksh/models.py b/yaksh/models.py index 296ec48..d611f6b 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -637,7 +637,7 @@ class Course(models.Model): return quiz_list def get_quiz_details(self): - return [(self, quiz, quiz.get_total_students(self), + return [(quiz, quiz.get_total_students(self), quiz.get_passed_students(self), quiz.get_failed_students(self)) for quiz in self.get_quizzes()] diff --git a/yaksh/templates/yaksh/add_course.html b/yaksh/templates/yaksh/add_course.html index 904cf5f..47a637d 100644 --- a/yaksh/templates/yaksh/add_course.html +++ b/yaksh/templates/yaksh/add_course.html @@ -15,7 +15,7 @@
{% csrf_token %}
- +
{{ form.as_table }}

@@ -25,7 +25,7 @@
-
+
{% endblock %} diff --git a/yaksh/templates/yaksh/complete.html b/yaksh/templates/yaksh/complete.html index 242b6da..c99b8f0 100644 --- a/yaksh/templates/yaksh/complete.html +++ b/yaksh/templates/yaksh/complete.html @@ -36,7 +36,7 @@

You may now close the browser.


{% endif %} Home - {% if module_id %} + {% if module_id and not user == "moderator" %} {% if first_unit %} Next Unit diff --git a/yaksh/templates/yaksh/courses.html b/yaksh/templates/yaksh/courses.html index 50c845b..5daf944 100644 --- a/yaksh/templates/yaksh/courses.html +++ b/yaksh/templates/yaksh/courses.html @@ -66,7 +66,7 @@ {% for course in courses %} - {{ course.name }} + {{ course.name }} {% if course.active %} Active diff --git a/yaksh/templates/yaksh/moderator_dashboard.html b/yaksh/templates/yaksh/moderator_dashboard.html index 490ec83..17a4924 100644 --- a/yaksh/templates/yaksh/moderator_dashboard.html +++ b/yaksh/templates/yaksh/moderator_dashboard.html @@ -1,4 +1,5 @@ {% extends "manage.html" %} +{% load custom_filters %} {% block pagetitle %} Moderator's Dashboard {% endblock pagetitle %} {% block script %} @@ -9,27 +10,43 @@

List of quizzes! Click on the given links to have a look at answer papers for a quiz.

- - - - - - {% for course, quiz, answer_papers, users_passed, users_failed in users_per_paper %} + + + {% for course in courses %} - - - {% endfor %} @@ -47,7 +64,7 @@ What's This
-
    +
    • A Demo Course and Demo Quiz will be created (Click Courses link on nav bar to view courses).
    • Some Demo Questions are also created for you (Click Questions link on nav bar to view questions).
    • In Courses you can view Demo Quiz.
    • diff --git a/yaksh/templates/yaksh/question.html b/yaksh/templates/yaksh/question.html index eab3289..12f5da6 100644 --- a/yaksh/templates/yaksh/question.html +++ b/yaksh/templates/yaksh/question.html @@ -110,23 +110,18 @@ module_id = "{{module.id}}" {% endif %} {% if unit.learning_type == "quiz" %} - {% if status == "completed" %} - + {{ unit.quiz.description }} - - - {% else %} - {{ unit.quiz.description }} - {% endif %} + {% else %} - {% if status == "completed" %} - + {{ unit.lesson.name }} - - - {% else %} - {{ unit.lesson.name }} - {% endif %} + +{% endif %} +{% if status == "completed" %} + +{% else %} + {% endif %} diff --git a/yaksh/templates/yaksh/quizzes_user.html b/yaksh/templates/yaksh/quizzes_user.html index d564a8f..3c4b985 100644 --- a/yaksh/templates/yaksh/quizzes_user.html +++ b/yaksh/templates/yaksh/quizzes_user.html @@ -5,7 +5,7 @@ {% block main %} {% if msg %} {% endif %} {% if 'Enrolled Courses' not in title%} diff --git a/yaksh/templates/yaksh/show_video.html b/yaksh/templates/yaksh/show_video.html index fa80ddb..ffb0c68 100644 --- a/yaksh/templates/yaksh/show_video.html +++ b/yaksh/templates/yaksh/show_video.html @@ -15,27 +15,22 @@ {% get_unit_status course learning_module unit user as status %} {% if unit.id == current_unit.id %} - + {% endif %} {% if unit.learning_type == "quiz" %} - {% if status == "completed" %} - - {{ unit.quiz.description }} - - - {% else %} + {{ unit.quiz.description }} - {% endif %} + {% else %} - {% if status == "completed" %} {{ unit.lesson.name }} - - {% else %} - {{ unit.lesson.name }} - {% endif %} +{% endif %} +{% if status == "completed" %} + +{% else %} + {% endif %} @@ -57,7 +52,7 @@
- Next Unit + Next Unit @@ -70,7 +65,7 @@
- Next Unit + Next Unit diff --git a/yaksh/templatetags/custom_filters.py b/yaksh/templatetags/custom_filters.py index 1749d71..6ddd213 100644 --- a/yaksh/templatetags/custom_filters.py +++ b/yaksh/templatetags/custom_filters.py @@ -39,6 +39,12 @@ def file_title(name): def get_unit_status(course, module, unit, user): return course.get_unit_completion_status(module, user, unit) + @register.simple_tag def get_module_status(user, module, course): return module.get_status(user, course) + + +@register.simple_tag +def get_course_details(course): + return course.get_quiz_details() diff --git a/yaksh/views.py b/yaksh/views.py index 90ef5f9..1147bb4 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -364,10 +364,7 @@ def prof_manage(request, msg=None): qpaper.quiz.delete() else: answerpaper.delete() - users_per_paper = [] - for course in courses: - users_per_paper.extend(course.get_quiz_details()) - context = {'user': user, 'users_per_paper': users_per_paper, + context = {'user': user, 'courses': courses, 'trial_paper': trial_paper, 'msg': msg } return my_render_to_response( @@ -437,16 +434,14 @@ def start(request, questionpaper_id=None, attempt_num=None, course_id=None, msg = 'You are not enrolled in {0} course'.format(course.name) if is_moderator(user): return prof_manage(request, msg=msg) - return view_module(request, module_id=module_id, course_id=course_id, - msg=msg) + return quizlist_user(request, msg=msg) # if course is active and is not expired if not course.active or not course.is_active_enrollment(): msg = "{0} is either expired or not active".format(course.name) if is_moderator(user): return prof_manage(request, msg=msg) - return view_module(request, module_id=module_id, course_id=course_id, - msg=msg) + return quizlist_user(request, msg=msg) # is quiz is active and is not expired if quest_paper.quiz.is_expired() or not quest_paper.quiz.active: @@ -815,6 +810,8 @@ def complete(request, reason=None, attempt_num=None, questionpaper_id=None, context = {'message': message, 'paper': paper, 'module_id': learning_module.id, 'course_id': course_id, 'learning_unit': learning_unit} + if is_moderator(user): + context['user'] = "moderator" return my_render_to_response('yaksh/complete.html', context) @@ -2217,6 +2214,9 @@ def show_video(request, lesson_id, module_id, course_id): course = Course.objects.get(id=course_id) if user not in course.students.all(): raise Http404('This course does not belong to you') + if not course.active or not course.is_active_enrollment(): + msg = "{0} is either expired or not active".format(course.name) + return quizlist_user(request, msg=msg) learn_module = course.learning_module.get(id=module_id) learn_unit = learn_module.learning_unit.get(lesson_id=lesson_id) learning_units = learn_module.get_learning_units() @@ -2503,6 +2503,9 @@ def view_module(request, module_id, course_id, msg=None): if user not in course.students.all(): raise Http404('You are not enrolled for this course!') context = {} + if not course.active or not course.is_active_enrollment(): + msg = "{0} is either expired or not active".format(course.name) + return quizlist_user(request, msg=msg) learning_module = course.learning_module.get(id=module_id) if learning_module.has_prerequisite(): if not learning_module.is_prerequisite_passed(user, course): -- cgit
CourseQuizTaken ByNo. of users PassedNo. of users FailedCoursesQuizzes
+ {{ course }} + - {{ quiz.description }} - - {{ answer_papers }} user(s) - - {{ users_passed }} - - {{ users_failed }} + {% get_course_details course as course_details %} + {% if course_details %} + + + + + + {% for quiz, users_no, passed, failed in course_details %} + + + + + + + {% endfor %} +
QuizTaken ByNo. of users PassedNo. of users Failed
+ {{ quiz.description }} + + {{users_no}} user(s) + + {{passed}} + + {{failed}} +
+ {% else %} + No Quizzes + {% endif %}