From 290b71a311ad245b996f38bc7da4080a07493958 Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Wed, 5 Apr 2017 18:50:00 +0530 Subject: Add course_code field allows access only to users with relevant course code string --- yaksh/forms.py | 11 +++++++++++ yaksh/models.py | 4 ++++ yaksh/templates/yaksh/quizzes_user.html | 19 +++++++++++++++++-- yaksh/views.py | 23 +++++++++++++++++------ 4 files changed, 49 insertions(+), 8 deletions(-) (limited to 'yaksh') diff --git a/yaksh/forms.py b/yaksh/forms.py index f7f7a10..1306e7d 100644 --- a/yaksh/forms.py +++ b/yaksh/forms.py @@ -274,6 +274,17 @@ class QuestionFilterForm(forms.Form): class CourseForm(forms.ModelForm): """ course form for moderators """ + def save(self, commit=True, *args, **kwargs): + instance = super(CourseForm, self).save(commit=False) + if instance.code: + instance.hidden = True + else: + instance.hidden = False + + if commit: + instance.save() + return instance + class Meta: model = Course exclude = ['creator', 'requests', 'students', 'rejected', diff --git a/yaksh/models.py b/yaksh/models.py index 6646615..35375e0 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -112,6 +112,8 @@ class CourseManager(models.Manager): trial_course.enroll(False, user) return trial_course + def get_hidden_courses(self, code): + return self.filter(code=code, hidden=True) ############################################################################### class Course(models.Model): @@ -119,6 +121,8 @@ class Course(models.Model): name = models.CharField(max_length=128) enrollment = models.CharField(max_length=32, choices=enrollment_methods) active = models.BooleanField(default=True) + code = models.CharField(max_length=128, null=True, blank=True) + hidden = models.BooleanField(default=False) creator = models.ForeignKey(User, related_name='creator') students = models.ManyToManyField(User, related_name='students') requests = models.ManyToManyField(User, related_name='requests') diff --git a/yaksh/templates/yaksh/quizzes_user.html b/yaksh/templates/yaksh/quizzes_user.html index ce74844..c34138f 100644 --- a/yaksh/templates/yaksh/quizzes_user.html +++ b/yaksh/templates/yaksh/quizzes_user.html @@ -1,6 +1,21 @@ {% extends "user.html" %} {% block pagetitle %} {{ title }} {% endblock %} {% block main %} +
+ +
{% for course in courses %}
@@ -41,7 +56,7 @@ {% else %} - {{ quiz.description }} INACTIVE
+ {{ quiz.description }} Inactive
{% endif %} @@ -83,7 +98,7 @@ {% endif %}
-
+
{% endfor %} {% endblock %} diff --git a/yaksh/views.py b/yaksh/views.py index 94cb0c6..d298e5e 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -122,14 +122,25 @@ def user_logout(request): def quizlist_user(request, enrolled=None): """Show All Quizzes that is available to logged-in user.""" user = request.user - if enrolled is not None: + ci = RequestContext(request) + + if request.method == "POST": + course_code = request.POST.get('course_code') + hidden_courses = Course.objects.get_hidden_courses(code=course_code) + courses = hidden_courses if hidden_courses else None + title = 'Search' + + elif enrolled is not None: courses = user.students.all() title = 'Enrolled Courses' else: - courses = Course.objects.filter(active=True, is_trial=False) + courses = Course.objects.filter(active=True, is_trial=False, hidden=False) title = 'All Courses' + context = {'user': user, 'courses': courses, 'title': title} - return my_render_to_response("yaksh/quizzes_user.html", context) + + return my_render_to_response("yaksh/quizzes_user.html", context, + context_instance=ci) @login_required @@ -639,8 +650,8 @@ def enroll_request(request, course_id): user = request.user ci = RequestContext(request) course = get_object_or_404(Course, pk=course_id) - if not course.is_active_enrollment: - msg = 'Enrollment for this course has been closed, please contact your '\ + if not course.is_active_enrollment and course.hidden: + msg = 'Unable to add enrollments for this course, please contact your '\ 'instructor/administrator.' return complete(request, msg, attempt_num=None, questionpaper_id=None) @@ -1238,7 +1249,7 @@ def search_teacher(request, course_id): if not is_moderator(user): raise Http404('You are not allowed to view this page!') - context = {} + context = {'success': False} course = get_object_or_404(Course, pk=course_id) context['course'] = course -- cgit From 37a4f9704bcd7e3590b61ff4668bc547a232ed7f Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Wed, 19 Apr 2017 10:43:25 +0530 Subject: Hide field in CourseForm --- yaksh/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'yaksh') diff --git a/yaksh/forms.py b/yaksh/forms.py index 1306e7d..d56fb04 100644 --- a/yaksh/forms.py +++ b/yaksh/forms.py @@ -288,7 +288,7 @@ class CourseForm(forms.ModelForm): class Meta: model = Course exclude = ['creator', 'requests', 'students', 'rejected', - 'created_on', 'is_trial', 'teachers'] + 'created_on', 'is_trial', 'hidden', 'teachers'] class ProfileForm(forms.ModelForm): -- cgit From 574b57c65d55d1f22a4907812ef22d2b44f8576c Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Wed, 19 Apr 2017 11:01:08 +0530 Subject: Display a message in case there are no courses to display --- yaksh/templates/yaksh/quizzes_user.html | 35 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'yaksh') diff --git a/yaksh/templates/yaksh/quizzes_user.html b/yaksh/templates/yaksh/quizzes_user.html index c34138f..4559e09 100644 --- a/yaksh/templates/yaksh/quizzes_user.html +++ b/yaksh/templates/yaksh/quizzes_user.html @@ -1,21 +1,26 @@ {% extends "user.html" %} {% block pagetitle %} {{ title }} {% endblock %} {% block main %} -
- + {% endif %} +{% if not courses %} +No Courses to display +{% endif %} {% for course in courses %}
@@ -24,6 +29,8 @@

{{ course.name }} by {{ course.creator.get_full_name }}

+ {% if course.hidden %}Hidden + {% endif %} {% if user in course.requests.all %} Request Pending {% elif user in course.rejected.all %}Request Rejected {% elif user in course.students.all %}Enrolled -- cgit From ba54ff69f0eb8ff509e4e043c42b933771e205c5 Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Thu, 27 Apr 2017 17:51:43 +0530 Subject: Rename the Hidden label to Open Course --- yaksh/models.py | 2 +- yaksh/templates/yaksh/quizzes_user.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'yaksh') diff --git a/yaksh/models.py b/yaksh/models.py index 35375e0..5fa828c 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -49,7 +49,7 @@ question_types = ( enrollment_methods = ( ("default", "Enroll Request"), - ("open", "Open Course"), + ("open", "Open Enrollment"), ) test_case_types = ( diff --git a/yaksh/templates/yaksh/quizzes_user.html b/yaksh/templates/yaksh/quizzes_user.html index 4559e09..90d7f8e 100644 --- a/yaksh/templates/yaksh/quizzes_user.html +++ b/yaksh/templates/yaksh/quizzes_user.html @@ -29,7 +29,7 @@ No Courses to display

{{ course.name }} by {{ course.creator.get_full_name }}

- {% if course.hidden %}Hidden + {% if course.hidden %}Open Course {% endif %} {% if user in course.requests.all %} Request Pending {% elif user in course.rejected.all %}Request Rejected -- cgit