summaryrefslogtreecommitdiff
path: root/testapp/exam
diff options
context:
space:
mode:
authorhardythe12012-03-22 17:50:34 +0530
committerhardythe12012-03-22 17:50:34 +0530
commit246478f4ef75ae713e96a64d210bd3710bed3df9 (patch)
treec09755a4861bb734b035c685e2f5782952e3d9b1 /testapp/exam
parentb1ba290f249d84989cb3cc38d018482794582a46 (diff)
downloadonline_test-246478f4ef75ae713e96a64d210bd3710bed3df9.tar.gz
online_test-246478f4ef75ae713e96a64d210bd3710bed3df9.tar.bz2
online_test-246478f4ef75ae713e96a64d210bd3710bed3df9.zip
Tagging functionality in quiz
Diffstat (limited to 'testapp/exam')
-rw-r--r--testapp/exam/forms.py98
-rw-r--r--testapp/exam/views.py37
2 files changed, 76 insertions, 59 deletions
diff --git a/testapp/exam/forms.py b/testapp/exam/forms.py
index a6844bb..f48a674 100644
--- a/testapp/exam/forms.py
+++ b/testapp/exam/forms.py
@@ -24,32 +24,23 @@ PWD_CHARS = letters + punctuation + digits
class UserRegisterForm(forms.Form):
"""A Class to create new form for User's Registration. It has the various fields and functions required to register a new user to the system"""
- username = forms.CharField(max_length=30,
- help_text='Letters, digits, period and underscores only.')
+ username = forms.CharField(max_length=30, help_text='Letters, digits, period and underscores only.')
email = forms.EmailField()
- password = forms.CharField(max_length=30,
- widget=forms.PasswordInput())
- confirm_password = forms.CharField(max_length=30,
- widget=forms.PasswordInput())
+ password = forms.CharField(max_length=30, widget=forms.PasswordInput())
+ confirm_password = forms.CharField(max_length=30, widget=forms.PasswordInput())
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
- roll_number = forms.CharField(max_length=30,
- help_text="Use a dummy if you don't have one.")
- institute = forms.CharField(max_length=128,
- help_text='Institute/Organization')
- department = forms.CharField(max_length=64,
- help_text='Department you work/study at')
- position = forms.CharField(max_length=64,
- help_text='Student/Faculty/Researcher/Industry/etc.')
+ roll_number = forms.CharField(max_length=30, help_text="Use a dummy if you don't have one.")
+ institute = forms.CharField(max_length=128, help_text='Institute/Organization')
+ department = forms.CharField(max_length=64, help_text='Department you work/study at')
+ position = forms.CharField(max_length=64, help_text='Student/Faculty/Researcher/Industry/etc.')
def clean_username(self):
u_name = self.cleaned_data["username"]
-
if u_name.strip(UNAME_CHARS):
msg = "Only letters, digits, period and underscore characters are "\
"allowed in username"
raise forms.ValidationError(msg)
-
try:
User.objects.get(username__exact = u_name)
raise forms.ValidationError("Username already exists.")
@@ -100,20 +91,18 @@ class UserLoginForm(forms.Form):
def clean(self):
super(UserLoginForm, self).clean()
- try:
- u_name, pwd = self.cleaned_data["username"], self.cleaned_data["password"]
- user = authenticate(username = u_name, password = pwd)
- except Exception:
- raise forms.ValidationError("Username and/or Password is not entered")
-
+ try:
+ u_name, pwd = self.cleaned_data["username"], self.cleaned_data["password"]
+ user = authenticate(username = u_name, password = pwd)
+ except Exception:
+ raise forms.ValidationError("Username and/or Password is not entered")
if not user:
raise forms.ValidationError("Invalid username/password")
-
return user
class QuizForm(forms.Form):
"""Creates a form to add or edit a Quiz. It has the related fields and functions required."""
-
+
start_date = forms.DateField(initial=datetime.date.today)
duration = forms.IntegerField()
active = forms.BooleanField(required = False)
@@ -124,43 +113,42 @@ class QuizForm(forms.Form):
start_date = self.cleaned_data["start_date"]
duration = self.cleaned_data["duration"]
active = self.cleaned_data['active']
- description = self.cleaned_data["description"]
+ description = self.cleaned_data["description"]
- new_quiz = Quiz()
- new_quiz.start_date=start_date
- new_quiz.duration=duration
- new_quiz.active=active
- new_quiz.description=description
- new_quiz.save()
+ new_quiz = Quiz()
+ new_quiz.start_date=start_date
+ new_quiz.duration=duration
+ new_quiz.active=active
+ new_quiz.description=description
+ new_quiz.save()
class QuestionForm(forms.Form):
- """Creates a form to add or edit a Question. It has the related fields and functions required."""
-
- summary = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
- description = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
- points = forms.FloatField()
- test = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
- options = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}),required=False)
- type = forms.CharField(max_length=8, widget=forms.Select(choices=QUESTION_TYPE_CHOICES))
- active = forms.BooleanField(required=False)
- tags = TagField(widget=TagAutocomplete(),required=False)
-
- def save(self):
+ """Creates a form to add or edit a Question. It has the related fields and functions required."""
+
+ summary = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
+ description = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
+ points = forms.FloatField()
+ test = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}))
+ options = forms.CharField(widget = forms.Textarea(attrs={'cols': 40, 'rows': 1}),required=False)
+ type = forms.CharField(max_length=8, widget=forms.Select(choices=QUESTION_TYPE_CHOICES))
+ active = forms.BooleanField(required=False)
+ tags = TagField(widget=TagAutocomplete(),required=False)
+
+ def save(self):
summary = self.cleaned_data["summary"]
description = self.cleaned_data["description"]
points = self.cleaned_data['points']
- test = self.cleaned_data["test"]
+ test = self.cleaned_data["test"]
options = self.cleaned_data['options']
- type = self.cleaned_data["type"]
- active = self.cleaned_data["active"]
+ type = self.cleaned_data["type"]
+ active = self.cleaned_data["active"]
new_question = Question()
- new_question.summary = summary
- new_question.description = description
- new_question.points = points
- new_question.test = test
- new_question.options = options
- new_question.type = type
- new_question.active = active
- new_question.save()
-
+ new_question.summary = summary
+ new_question.description = description
+ new_question.points = points
+ new_question.test = test
+ new_question.options = options
+ new_question.type = type
+ new_question.active = active
+ new_question.save()
diff --git a/testapp/exam/views.py b/testapp/exam/views.py
index 325d0aa..dedf68c 100644
--- a/testapp/exam/views.py
+++ b/testapp/exam/views.py
@@ -111,6 +111,14 @@ def edit_quiz(request):
quiz.active = active[j]
quiz.description = description[j]
quiz.save()
+ edit_tags=tags[j]
+ quiz.save()
+ for tag in quiz.tags.all():
+ quiz.tags.remove(tag)
+ tags_split = edit_tags.split(',')
+ for i in range(0,len(tags_split)-1):
+ tag = tags_split[i].strip()
+ quiz.tags.add(tag)
j += 1
return my_redirect("/exam/manage/showquiz/")
@@ -244,7 +252,14 @@ def add_quiz(request,quiz_id=None):
d.duration = form['duration'].data
d.active = form['active'].data
d.description = form['description'].data
- d.save()
+ d.save()
+ quiz = Quiz.objects.get(id=quiz_id)
+ for tag in quiz.tags.all():
+ quiz.tags.remove(tag)
+ tags = form['tags'].data.split(',')
+ for i in range(0,len(tags)-1):
+ tag = tags[i].strip()
+ quiz.tags.add(tag)
return my_redirect("/exam/manage/showquiz")
else:
@@ -264,6 +279,15 @@ def add_quiz(request,quiz_id=None):
form.initial['duration'] = d.duration
form.initial['description']= d.description
form.initial['active'] = d.active
+ form_tags = d.tags.all()
+ form_tags_split = form_tags.values('name')
+ initial_tags = ""
+
+ for tag in form_tags_split:
+ initial_tags = initial_tags + str(tag['name']).strip() + ","
+ if (initial_tags == ","):
+ initial_tags = ""
+ form.initial['tags']=initial_tags
return my_render_to_response('exam/add_quiz.html',{'form':form},context_instance=RequestContext(request))
@@ -582,6 +606,14 @@ def show_all_quiz(request):
form.initial['duration'] = d.duration
form.initial['active']= d.active
form.initial['description'] = d.description
+ form_tags = d.tags.all()
+ form_tags_split = form_tags.values('name')
+ initial_tags = ""
+ for tag in form_tags_split:
+ initial_tags = initial_tags + str(tag['name']).strip() + ","
+ if (initial_tags == ","):
+ initial_tags = ""
+ form.initial['tags']=initial_tags
forms.append(form)
return my_render_to_response('exam/edit_quiz.html',
{'forms':forms},
@@ -698,12 +730,9 @@ def grade_user(request, username):
paper.save()
context = {'data': data}
- print context
return my_render_to_response('exam/user_data.html', context,
context_instance=RequestContext(request))
else:
context = {'data': data}
- print context
return my_render_to_response('exam/grade_user.html', context,
context_instance=RequestContext(request))
-