diff options
author | hardythe1 | 2012-03-22 17:50:34 +0530 |
---|---|---|
committer | hardythe1 | 2012-03-22 17:50:34 +0530 |
commit | 246478f4ef75ae713e96a64d210bd3710bed3df9 (patch) | |
tree | c09755a4861bb734b035c685e2f5782952e3d9b1 /testapp/exam | |
parent | b1ba290f249d84989cb3cc38d018482794582a46 (diff) | |
download | online_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.py | 98 | ||||
-rw-r--r-- | testapp/exam/views.py | 37 |
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)) - |