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 | |
parent | b1ba290f249d84989cb3cc38d018482794582a46 (diff) | |
download | online_test-246478f4ef75ae713e96a64d210bd3710bed3df9.tar.gz online_test-246478f4ef75ae713e96a64d210bd3710bed3df9.tar.bz2 online_test-246478f4ef75ae713e96a64d210bd3710bed3df9.zip |
Tagging functionality in quiz
-rw-r--r-- | testapp/exam/forms.py | 98 | ||||
-rw-r--r-- | testapp/exam/views.py | 37 | ||||
-rw-r--r-- | testapp/static/exam/js/show_question.js | 60 | ||||
-rw-r--r-- | testapp/static/exam/js/show_quiz.js | 50 | ||||
-rw-r--r-- | testapp/templates/exam/edit_quiz.html | 16 | ||||
-rw-r--r-- | testapp/templates/exam/grade_user.html | 2 | ||||
-rw-r--r-- | testapp/templates/exam/show_quiz.html | 4 | ||||
-rw-r--r-- | testapp/templates/exam/showquestions.html | 4 |
8 files changed, 162 insertions, 109 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)) - diff --git a/testapp/static/exam/js/show_question.js b/testapp/static/exam/js/show_question.js index ccacbdd..e3ed1cc 100644 --- a/testapp/static/exam/js/show_question.js +++ b/testapp/static/exam/js/show_question.js @@ -1,23 +1,39 @@ function confirm_delete(frm) - { - var r = confirm("Are you Sure ?"); - if(r==false) - { - for(i=0;i<frm.question.length;i++) - { - frm.question[i].checked=false; - } - location.replace("{{URL_ROOT}}/exam/manage/showquestion"); - } - } - function confirm_edit(frm) - { - var n = 0; - for(i=0;i<frm.question.length;i++) - { - if(frm.question[i].checked==true) - n = n+1; - } - if(n==0) - location.replace("{{URL_ROOT}}/exam/manage/showquestion"); - } +{ + var n=0; + for (var i =0;i<frm.question.length;i++) + { + if (frm.question[i].checked == false) + n = n + 1 ; + } + if(n==frm.question.length) + { + alert("Please Select at least one Question"); + return false; + } + var r = confirm("Are you Sure ?"); + if(r==false) + { + for(i=0;i<frm.question.length;i++) + { + frm.question[i].checked=false; + } + return false; + } +} +function confirm_edit(frm) +{ + var n = 0; + for (var i =0;i<frm.question.length;i++) + { + if (frm.question[i].checked == false) + n = n + 1 ; + } + if(n == frm.question.length) + { + alert("Please Select at least one Question"); + return false; + } + else + return true; +} diff --git a/testapp/static/exam/js/show_quiz.js b/testapp/static/exam/js/show_quiz.js index db48a37..55813c9 100644 --- a/testapp/static/exam/js/show_quiz.js +++ b/testapp/static/exam/js/show_quiz.js @@ -1,23 +1,39 @@ - function my_confirm(frm) - { - var r = confirm("Are you Sure ?"); - if(r==false) - { +function confirm_delete(frm) +{ + var n=0; + for (var i =0;i<frm.quiz.length;i++) + { + if (frm.quiz[i].checked == false) + n = n + 1 ; + } + if(n==frm.quiz.length) + { + alert("Please Select at least one Quiz"); + return false; + } + var r = confirm("Are you Sure ?"); + if(r==false) + { for(i=0;i<frm.quiz.length;i++) { frm.quiz[i].checked=false; } - location.replace("{{URL_ROOT}}/exam/manage/showquiz"); - } - } - function confirm_edit(frm) - { - var n = 0; - for (var i =0;i<frm.quiz.length;i++) - { + return false; + } +} +function confirm_edit(frm) +{ + var n = 0; + for (var i =0;i<frm.quiz.length;i++) + { if (frm.quiz[i].checked == false) n = n + 1 ; - } - if(n == frm.quiz.length) - location.replace("{{URL_ROOT}}/exam/manage/showquiz"); - } + } + if(n == frm.quiz.length) + { + alert("Please Select at least one Quiz"); + return false; + } + else + return true; +} diff --git a/testapp/templates/exam/edit_quiz.html b/testapp/templates/exam/edit_quiz.html index 2ab01bb..8e4917d 100644 --- a/testapp/templates/exam/edit_quiz.html +++ b/testapp/templates/exam/edit_quiz.html @@ -5,14 +5,17 @@ {% block css %} <link rel="stylesheet" href="{{ URL_ROOT }}/static/exam/css/question_quiz.css" type="text/css" /> -<style type='text/css'> -table th, table td - { - text-align: left; - } -</style> +<link rel="stylesheet" media="all" type="text/css" href="{{ URL_ROOT }}/static/exam/css/autotaggit.css" /> {% endblock %} +{% block script %} +<script src="{{ URL_ROOT }}/static/exam/js/edit_quiz.js"></script> +<script src="/static/taggit_autocomplete_modified/jquery.min.js" type="text/javascript"></script> +<script src="/static/taggit_autocomplete_modified/jquery.autocomplete.js" type="text/javascript"></script> +{% endblock %} + +{% block onload %} onload = 'javascript:form_load();' {% endblock %} + {% block manage %} <form name=frm action="{{URL_ROOT}}/exam/manage/editquiz/" method="post"> {% csrf_token %} @@ -22,6 +25,7 @@ table th, table td <tr><td><b>Start Date: <td>{{ form.start_date}} <tr><td><b>Duration: <td> {{ form.duration }} <tr><td><b>Active: <td> {{ form.active }} + <tr><td><b>Tags: <td> {{ form.tags }} <tr><td><b>Description: <td> {{ form.description }} <hr> {% endfor %} diff --git a/testapp/templates/exam/grade_user.html b/testapp/templates/exam/grade_user.html index 5ffb199..7137548 100644 --- a/testapp/templates/exam/grade_user.html +++ b/testapp/templates/exam/grade_user.html @@ -63,7 +63,7 @@ Start time: {{ paper.start_time }} <br/> <div id="contentDiv"> <div id="myContent{{question.id}}" style="padding:5px; display:none;"> <p> Description : {{ question.description }} </p> - <p> Test : {{ question.test }} </p> + <p> Test : {{ question.test }} </p> </div> </div> <div class="question-form"> diff --git a/testapp/templates/exam/show_quiz.html b/testapp/templates/exam/show_quiz.html index 1a4c289..886a696 100644 --- a/testapp/templates/exam/show_quiz.html +++ b/testapp/templates/exam/show_quiz.html @@ -24,8 +24,8 @@ <br><br> <button class="btn" type="button" onClick='location.replace("{{URL_ROOT}}/exam/manage/addquiz");'>Add New Quiz</button> -<button class="btn" type="submit" name='edit' value='edit' onClick="confirm_edit(frm);" >Edit Selected</button> -<button class="btn" type="submit" name="delete" value='delete' onClick="my_confirm(frm);">Delete Selected</button> +<button class="btn" type="submit" name='edit' value='edit' onClick="return confirm_edit(frm);" >Edit Selected</button> +<button class="btn" type="submit" name="delete" value='delete' onClick="return confirm_delete(frm);">Delete Selected</button> </form> {% endif %} diff --git a/testapp/templates/exam/showquestions.html b/testapp/templates/exam/showquestions.html index d406522..62b40e4 100644 --- a/testapp/templates/exam/showquestions.html +++ b/testapp/templates/exam/showquestions.html @@ -15,7 +15,7 @@ {% endfor %} <br> <button class="btn" type="button" onclick='location.replace("{{URL_ROOT}}/exam/manage/addquestion/");'>Add Question</button> -<button class="btn" type="submit" name='edit' value='edit' onClick="confirm_edit(frm);">Edit Selected</button> -<button class="btn" type="submit" onClick="confirm_delete(frm);" name='delete' value='delete'>Delete Selected</button> +<button class="btn" type="submit" name='edit' value='edit' onClick="return confirm_edit(frm);">Edit Selected</button> +<button class="btn" type="submit" onClick="return confirm_delete(frm);" name='delete' value='delete'>Delete Selected</button> </form> {% endblock %} |