summaryrefslogtreecommitdiff
path: root/yaksh
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh')
-rw-r--r--yaksh/models.py3
-rw-r--r--yaksh/templates/yaksh/addteacher.html2
-rw-r--r--yaksh/templates/yaksh/courses.html2
-rw-r--r--yaksh/tests.py19
-rw-r--r--yaksh/urls.py2
-rw-r--r--yaksh/views.py12
6 files changed, 28 insertions, 12 deletions
diff --git a/yaksh/models.py b/yaksh/models.py
index bb85085..cb9582f 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -112,6 +112,9 @@ class Course(models.Model):
def is_creator(self, user):
return self.creator == user
+ def is_teacher(self, user):
+ return True if user in self.teachers.all() else False
+
def is_self_enroll(self):
return True if self.enrollment == enrollment_methods[1][0] else False
diff --git a/yaksh/templates/yaksh/addteacher.html b/yaksh/templates/yaksh/addteacher.html
index 790c06c..6bb5c9a 100644
--- a/yaksh/templates/yaksh/addteacher.html
+++ b/yaksh/templates/yaksh/addteacher.html
@@ -50,7 +50,7 @@
{% endif %}
{% endfor %}
</table>
- <button class="btn" type="submit">Add</button>
+ <button class="btn" type="submit">Add Selected</button>
{% endif %}
{% endif %}
</form>
diff --git a/yaksh/templates/yaksh/courses.html b/yaksh/templates/yaksh/courses.html
index 43a9535..06c848c 100644
--- a/yaksh/templates/yaksh/courses.html
+++ b/yaksh/templates/yaksh/courses.html
@@ -9,7 +9,7 @@
{% endblock %}
{% block manage %}
-<a href="{{URL_ROOT}}/exam/manage/viewcourse/">View Allotted Courses</a><br>
+<a href="{{URL_ROOT}}/exam/manage/allotted_course/">View Allotted Courses</a><br>
{% if not courses %}
<center><h4> No new Courses added </h4></center>
{% else %}
diff --git a/yaksh/tests.py b/yaksh/tests.py
index bd733c3..831a0fb 100644
--- a/yaksh/tests.py
+++ b/yaksh/tests.py
@@ -21,6 +21,12 @@ def setUpModule():
Profile.objects.create(user=student, roll_number=3, institute='IIT',
department='Chemical', position='Student')
+ student1 = User.objects.create_user(username='demo_user4',
+ password='demo',
+ email='demo@test.com')
+ Profile.objects.create(user=student1, roll_number=4, institute='IIT',
+ department='Chemical', position='Student')
+
# create group
group = Group(name="moderator")
group.save()
@@ -393,6 +399,7 @@ class CourseTestCases(unittest.TestCase):
self.creator = User.objects.get(pk=1)
self.student1 = User.objects.get(pk=2)
self.student2 = User.objects.get(pk=3)
+ self.student3 = User.objects.get(pk=4)
self.quiz1 = Quiz.objects.get(pk=1)
self.quiz2 = Quiz.objects.get(pk=2)
@@ -457,6 +464,12 @@ class CourseTestCases(unittest.TestCase):
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])
+ self.course.add_teachers(self.student2, self.student3)
+ self.course.remove_teachers(self.student2)
+ self.assertSequenceEqual(self.course.get_teachers(), [self.student3])
+
+ def test_is_teacher(self):
+ """ Test to check if user is teacher"""
+ self.course.add_teachers(self.student2)
+ result = self.course.is_teacher(self.student2)
+ self.assertTrue(result)
diff --git a/yaksh/urls.py b/yaksh/urls.py
index 1716818..ea1922d 100644
--- a/yaksh/urls.py
+++ b/yaksh/urls.py
@@ -87,6 +87,6 @@ urlpatterns += [
views.reject, {'was_enrolled': True}),
url(r'^manage/searchteacher/(?P<course_id>\d+)/$', views.search_teacher),
url(r'^manage/addteacher/(?P<course_id>\d+)/$', views.add_teacher),
- url(r'^manage/viewcourse/$', views.view_courses),
+ url(r'^manage/allotted_course/$', views.allotted_courses),
url(r'^manage/remove_teachers/(?P<course_id>\d+)/$', views.remove_teachers)
]
diff --git a/yaksh/views.py b/yaksh/views.py
index dd8cc2b..3823976 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -608,12 +608,11 @@ def courses(request):
def course_detail(request, course_id):
user = request.user
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()
- if user != course.creator and user not in course.teachers.all():
+ if not is_moderator(user) or not course:
raise Http404('You are not allowed to view this page')
+
return my_render_to_response('yaksh/course_detail.html', {'course': course},
context_instance=ci)
@@ -843,7 +842,8 @@ def download_csv(request, questionpaper_id):
if not is_moderator(user):
raise Http404('You are not allowed to view this page!')
quiz = Quiz.objects.get(questionpaper=questionpaper_id)
- if quiz.course.creator != user and user not in quiz.course.teachers.all():
+
+ if not quiz.course.is_creator(user) and not quiz.course.is_teacher(user):
raise Http404('The question paper does not belong to your course')
papers = AnswerPaper.objects.get_latest_attempts(questionpaper_id)
if not papers:
@@ -1098,7 +1098,7 @@ def add_teacher(request, course_id):
@login_required
-def view_courses(request):
+def allotted_courses(request):
""" show courses allotted to a user """
user = request.user
@@ -1113,7 +1113,7 @@ def view_courses(request):
@login_required
def remove_teachers(request, course_id):
- """ show courses allotted to a user """
+ """ remove user from a course """
user = request.user
if not is_moderator(user):