summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorankitjavalkar2019-12-18 14:49:16 +0530
committerankitjavalkar2020-01-03 15:11:04 +0530
commit6eca1dd646eff0c1f90c129e10e7959e79eb83a2 (patch)
tree898143af81f06c699862aa49381a8bf2cac5f253
parent417b139cf64a85b211ce878cb45cc069fd1ce520 (diff)
downloadonline_test-6eca1dd646eff0c1f90c129e10e7959e79eb83a2.tar.gz
online_test-6eca1dd646eff0c1f90c129e10e7959e79eb83a2.tar.bz2
online_test-6eca1dd646eff0c1f90c129e10e7959e79eb83a2.zip
Fix bug to only allow self created grading systems to show up in the course form
-rw-r--r--yaksh/forms.py24
-rw-r--r--yaksh/views.py4
2 files changed, 19 insertions, 9 deletions
diff --git a/yaksh/forms.py b/yaksh/forms.py
index 57140bc..742212a 100644
--- a/yaksh/forms.py
+++ b/yaksh/forms.py
@@ -3,6 +3,7 @@ from yaksh.models import (
get_model_class, Profile, Quiz, Question, Course, QuestionPaper, Lesson,
LearningModule
)
+from grades.models import GradingSystem
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from django.conf import settings
@@ -268,6 +269,13 @@ class QuestionFilterForm(forms.Form):
class CourseForm(forms.ModelForm):
""" course form for moderators """
+ class Meta:
+ model = Course
+ fields = [
+ 'name', 'enrollment', 'active', 'code', 'instructions',
+ 'start_enroll_time', 'end_enroll_time', 'grading_system',
+ 'view_grade'
+ ]
def save(self, commit=True, *args, **kwargs):
instance = super(CourseForm, self).save(commit=False)
@@ -280,13 +288,15 @@ class CourseForm(forms.ModelForm):
instance.save()
return instance
- class Meta:
- model = Course
- fields = [
- 'name', 'enrollment', 'active', 'code', 'instructions',
- 'start_enroll_time', 'end_enroll_time', 'grading_system',
- 'view_grade'
- ]
+ def __init__(self, user, *args, **kwargs):
+ super(CourseForm, self).__init__(*args, **kwargs)
+ if self.instance.id and self.instance.teachers.filter(id=user.id).exists():
+ self.fields['grading_system'].widget.attrs['disabled'] = True
+ else:
+ grading_choices = GradingSystem.objects.filter(
+ creator=user
+ )
+ self.fields['grading_system'].queryset = grading_choices
class ProfileForm(forms.ModelForm):
diff --git a/yaksh/views.py b/yaksh/views.py
index 0bf91eb..afb69ac 100644
--- a/yaksh/views.py
+++ b/yaksh/views.py
@@ -970,7 +970,7 @@ def add_course(request, course_id=None):
if not is_moderator(user):
raise Http404('You are not allowed to view this page')
if request.method == 'POST':
- form = CourseForm(request.POST, instance=course)
+ form = CourseForm(user, request.POST, instance=course)
if form.is_valid():
new_course = form.save(commit=False)
if course_id is None:
@@ -982,7 +982,7 @@ def add_course(request, course_id=None):
request, 'yaksh/add_course.html', {'form': form}
)
else:
- form = CourseForm(instance=course)
+ form = CourseForm(user, instance=course)
return my_render_to_response(
request, 'yaksh/add_course.html', {'form': form}
)