@@ -28,11 +31,39 @@
{% endif %}
{{ course.name }}
-
+
+ {% if user == course.creator %}
+
+
+
Teacher(s) Added to {{ course }}
+ {% if course.get_teachers %}
+
+ {% else %}
+
No Teacher(s) Added
+ {% endif %}
+
+
+
+ {% endif %}
+ {% if user == course.creator %}
+ {% endif %}
Quiz(zes)
{% if course.get_quizzes %}
@@ -48,7 +79,6 @@
{% endfor %}
-
{% endif %}
diff --git a/yaksh/templates/yaksh/viewcourse.html b/yaksh/templates/yaksh/viewcourse.html
deleted file mode 100644
index a3ef3e6..0000000
--- a/yaksh/templates/yaksh/viewcourse.html
+++ /dev/null
@@ -1,51 +0,0 @@
-{% extends "manage.html" %}
-
-{% block title %} Courses {% endblock title %}
-
-{% block subtitle %} Courses {% endblock %}
-
-{% block css %}
-
-{% endblock %}
-
-{% block manage %}
-
Course(s) Allotted
-{% if not courses %}
-
You are not added to any course(s)
-{% else %}
-{% for course in courses %}
-
{{ course.creator.get_full_name }} added you to this course
-
-
-
-
-
- Course
- {% if course.active %}
- Active
- {% else %}
- Closed
- {% endif %}
-
-
{{ course.name }}
-
-
-
-
Quiz(zes)
- {% if course.get_quizzes %}
- {% for quiz in course.get_quizzes %}
-
{{ quiz.description }}
- {% endfor %}
- {% else %}
-
No quiz
- {% endif %}
-
-
-
-
-
-{% endfor %}
-
-
-{% endif %}
-{% endblock %}
diff --git a/yaksh/tests.py b/yaksh/tests.py
index d69882d..bd733c3 100644
--- a/yaksh/tests.py
+++ b/yaksh/tests.py
@@ -60,13 +60,13 @@ def tearDownModule():
###############################################################################
class ProfileTestCases(unittest.TestCase):
def setUp(self):
- self.user = User.objects.get(pk=1)
+ self.user1 = User.objects.get(pk=1)
self.profile = Profile.objects.get(pk=1)
- self.user1 = User.objects.get(pk=3)
+ self.user2 = User.objects.get(pk=3)
def test_user_profile(self):
""" Test user profile"""
- self.assertEqual(self.user.username, 'demo_user')
+ self.assertEqual(self.user1.username, 'demo_user')
self.assertEqual(self.profile.user.username, 'demo_user')
self.assertEqual(int(self.profile.roll_number), 1)
self.assertEqual(self.profile.institute, 'IIT')
@@ -74,9 +74,9 @@ class ProfileTestCases(unittest.TestCase):
self.assertEqual(self.profile.position, 'Student')
def test_is_moderator(self):
- result = self.user1.profile.is_moderator(self.user1)
+ result = self.user2.profile.is_moderator(self.user2)
self.assertTrue(result)
- result = self.user.profile.is_moderator(self.user)
+ result = self.user1.profile.is_moderator(self.user1)
self.assertFalse(result)
###############################################################################
@@ -454,3 +454,9 @@ class CourseTestCases(unittest.TestCase):
added_list, rejected_list = self.course.add_teachers(self.student1, self.student2)
self.assertSequenceEqual(added_list, [self.student2])
self.assertSequenceEqual(rejected_list, [self.student1])
+
+ def test_remove_teachers(self):
+ """ Test to remove teachers from a course"""
+ self.course.add_teachers(self.student1, self.student2)
+ self.course.remove_teachers(self.student1)
+ self.assertSequenceEqual(self.course.get_teachers(), [self.student2])
diff --git a/yaksh/urls.py b/yaksh/urls.py
index 7f42faf..1716818 100644
--- a/yaksh/urls.py
+++ b/yaksh/urls.py
@@ -87,5 +87,6 @@ urlpatterns += [
views.reject, {'was_enrolled': True}),
url(r'^manage/searchteacher/(?P
\d+)/$', views.search_teacher),
url(r'^manage/addteacher/(?P\d+)/$', views.add_teacher),
- url(r'^manage/viewcourse/$', views.view_courses)
+ url(r'^manage/viewcourse/$', views.view_courses),
+ url(r'^manage/remove_teachers/(?P\d+)/$', views.remove_teachers)
]
diff --git a/yaksh/views.py b/yaksh/views.py
index a56182b..dd8cc2b 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -596,10 +596,12 @@ def self_enroll(request, course_id):
@login_required
def courses(request):
user = request.user
+ ci = RequestContext(request)
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
courses = Course.objects.filter(creator=user)
- return my_render_to_response('yaksh/courses.html', {'courses': courses})
+ return my_render_to_response('yaksh/courses.html', {'courses': courses},
+ context_instance=ci)
@login_required
@@ -608,8 +610,12 @@ def course_detail(request, course_id):
ci = RequestContext(request)
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
- course = Course.objects.filter(Q(creator=user)|Q(teachers=user), pk=course_id).first()
- return my_render_to_response('yaksh/course_detail.html', {'course': course})
+ course = Course.objects.filter(Q(creator=user)|Q(teachers=user),
+ pk=course_id).first()
+ if user != course.creator and user not in course.teachers.all():
+ raise Http404('You are not allowed to view this page')
+ return my_render_to_response('yaksh/course_detail.html', {'course': course},
+ context_instance=ci)
@login_required
@@ -618,7 +624,8 @@ def enroll(request, course_id, user_id=None, was_rejected=False):
ci = RequestContext(request)
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
- course = Course.objects.filter(Q(creator=user)|Q(teachers=user), pk=course_id).first()
+ course = Course.objects.filter(Q(creator=user)|Q(teachers=user),
+ pk=course_id).first()
if request.method == 'POST':
enroll_ids = request.POST.getlist('check')
else:
@@ -637,7 +644,8 @@ def reject(request, course_id, user_id=None, was_enrolled=False):
ci = RequestContext(request)
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
- course = Course.objects.filter(Q(creator=user)|Q(teachers=user), pk=course_id).first()
+ course = Course.objects.filter(Q(creator=user)|Q(teachers=user),
+ pk=course_id).first()
if request.method == 'POST':
reject_ids = request.POST.getlist('check')
else:
@@ -655,7 +663,8 @@ def toggle_course_status(request, course_id):
user = request.user
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
- course = Course.objects.filter(Q(creator=user)|Q(teachers=user), pk=course_id).first()
+ course = Course.objects.filter(Q(creator=user)|Q(teachers=user),
+ pk=course_id).first()
if course.active:
course.deactivate()
else:
@@ -982,9 +991,6 @@ def view_profile(request):
user = request.user
ci = RequestContext(request)
- if not is_moderator(user):
- raise Http404('You are not allowed to view this page!')
-
context = {}
if has_profile(user):
return my_render_to_response('yaksh/view_profile.html', {'user':user})
@@ -996,6 +1002,7 @@ def view_profile(request):
return my_render_to_response('yaksh/editprofile.html', context,
context_instance=ci)
+
@login_required
def edit_profile(request):
""" edit profile details facility for moderator and students """
@@ -1031,12 +1038,18 @@ def edit_profile(request):
context_instance=ci)
+@login_required
def search_teacher(request, course_id):
""" search teachers for the course """
+ user = request.user
+ ci = RequestContext(request)
+
+ if not is_moderator(user):
+ raise Http404('You are not allowed to view this page!')
+
+ context = {}
course = get_object_or_404(Course, creator=user, pk=course_id)
context['course'] = course
- if not user.is_authenticated() or not is_moderator(user):
- raise Http404('You are not allowed to view this page!')
if request.method == 'POST':
u_name = request.POST.get('uname')
@@ -1074,15 +1087,16 @@ def add_teacher(request, course_id):
teacher_ids = request.POST.getlist('check')
teachers = User.objects.filter(id__in=teacher_ids)
teachers_added, teachers_rejected = course.add_teachers(*teachers)
+ context['status'] = True
context['teachers_added'] = teachers_added
context['teachers_rejected'] = teachers_rejected
- context['status'] = True
return my_render_to_response('yaksh/addteacher.html', context,
context_instance=ci)
else:
return my_render_to_response('yaksh/addteacher.html', context,
context_instance=ci)
+
@login_required
def view_courses(request):
""" show courses allotted to a user """
@@ -1093,6 +1107,21 @@ def view_courses(request):
raise Http404('You are not allowed to view this page!')
courses = Course.objects.filter(teachers=user)
- return my_render_to_response('yaksh/viewcourse.html', {'courses': courses},
+ return my_render_to_response('yaksh/courses.html', {'courses': courses},
context_instance=ci)
+
+@login_required
+def remove_teachers(request, course_id):
+ """ show courses allotted to a user """
+
+ user = request.user
+ if not is_moderator(user):
+ raise Http404('You are not allowed to view this page!')
+
+ course = get_object_or_404(Course, creator=user, pk=course_id)
+ if request.method == "POST":
+ teacher_ids = request.POST.getlist('remove')
+ teachers = User.objects.filter(id__in=teacher_ids)
+ course.remove_teachers(*teachers)
+ return my_redirect('/exam/manage/courses')
--
cgit