From af6409ed6b3c24bc865a3bc1b1ac5c73898d5485 Mon Sep 17 00:00:00 2001 From: ashwinishinde Date: Tue, 24 Mar 2015 16:01:35 +0530 Subject: Subject:Resolved View all questions and validate ask new answer Description: 1) display view all questions. 2) validate all the fields in ask new answer. 3) validate submit answer. --- static/website/css/main.css | 1 + static/website/templates/get-question.html | 18 +++++------- static/website/templates/new-question.html | 10 +++++-- static/website/templates/questions.html | 44 ++++++----------------------- website/forms.py | 30 ++++++++++++-------- website/urls.py | 2 +- website/views.py | 45 +++++++++++++++++------------- 7 files changed, 69 insertions(+), 81 deletions(-) diff --git a/static/website/css/main.css b/static/website/css/main.css index fc96f5b..171503d 100644 --- a/static/website/css/main.css +++ b/static/website/css/main.css @@ -282,6 +282,7 @@ table .question a{ #footer-inner a{ color: #ffffff; } + #footer-inner .cc{ font-size: 13px; text-align: center; diff --git a/static/website/templates/get-question.html b/static/website/templates/get-question.html index 3a0e4eb..f90681c 100644 --- a/static/website/templates/get-question.html +++ b/static/website/templates/get-question.html @@ -168,14 +168,17 @@ {% with WIDGET_ERROR_CLASS='field_error' %}
+ {{ form.body.errors }}
{% render_field form.question value=question.id %} - - {% render_field form.body class+='form-control body' %} + + {% render_field form.body class+='form-control' %}
- {{ form.body.errors }} +
+ + {% endwith %} @@ -197,14 +200,7 @@
The Current question is under:
{{ question.category }} - +
Move the question to:
diff --git a/static/website/templates/new-question.html b/static/website/templates/new-question.html index cb0439d..da803de 100644 --- a/static/website/templates/new-question.html +++ b/static/website/templates/new-question.html @@ -14,8 +14,9 @@

+ {{ form.category.errors }}
- {% render_field form.category class+="form-control"%} + {% render_field form.category class+="form-control category"%}
- Min - Sec - Question + Question Date Views Answers @@ -21,41 +18,18 @@ {% for question in questions %} - - {{ question.category|truncatechars:12 }} + + + + {{ question.category|truncatechars:12 }} + + - - - + - - {{ question.tutorial|truncatechars:12 }} - - - - - - - - - - + {{ question.title|truncatechars:40 }} diff --git a/website/forms.py b/website/forms.py index a55aec1..558d058 100644 --- a/website/forms.py +++ b/website/forms.py @@ -7,16 +7,18 @@ class NewQuestionForm(forms.ModelForm): category = forms.ModelChoiceField(widget = forms.Select(attrs = {}), queryset = FossCategory.objects.order_by('name'), empty_label = "Select a category", - error_messages = {'required':'Categoty field required.'}) + required = True, + error_messages = {'required':'Select a category.'}) - '''tutorial = forms.ModelChoiceField(widget = forms.Select(attrs = {}), q - ueryset = Issue.objects.order_by('name'), - empty_label = "Select a Issue", - error_messages = {'required':'Issue field required.'})''' - '''class Meta: - model = Question - fields = ['category', 'tutorial', 'title', 'body']''' - + title = forms.CharField(widget=forms.TextInput(), + required = True, + error_messages = {'required':'Title field required.'}) + + body = forms.CharField(widget=forms.Textarea(), + required = True, + error_messages = {'required':'question field required.'} + ) + class Meta: model = Question fields = ['category', 'title', 'body'] @@ -25,12 +27,16 @@ class NewQuestionForm(forms.ModelForm): category = kwargs.pop('category', None) super(NewQuestionForm, self).__init__(*args, **kwargs) -class AnswerQuesitionForm(forms.Form): +class AnswerQuestionForm(forms.ModelForm): question = forms.IntegerField(widget=forms.HiddenInput()) body = forms.CharField(widget=forms.Textarea(), - required = True + required = True, + error_messages = {'required':'Answer field required.'} ) + class Meta: + model = Question + fields = ['question', 'body'] class AnswerCommentForm(forms.Form): - body = forms.CharField(widget=forms.Textarea(),required = True) + body = forms.CharField(widget=forms.Textarea(),required = True,) diff --git a/website/urls.py b/website/urls.py index 33ad485..1c7d75e 100644 --- a/website/urls.py +++ b/website/urls.py @@ -8,7 +8,7 @@ urlpatterns = patterns('', url(r'^question-answer/(?P\d+)/$', 'website.views.question_answer', name='question_answer'), url(r'^answer-comment/$', 'website.views.answer_comment', name='answer_comment'), url(r'^filter/(?P[^/]+)/$', 'website.views.filter', name='filter'), - url(r'^filter/(?P[^/]+)/(?P[^/]+)/$', 'website.views.filter', name='filter'), + url(r'^filter/(?P[^/]+)/$', 'website.views.filter', name='filter'), #url(r'^filter/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/$', 'website.views.filter', name='filter'), #url(r'^filter/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/$', 'website.views.filter', name='filter'), url(r'^new-question/$', 'website.views.new_question', name='new_question'), diff --git a/website/views.py b/website/views.py index de3e370..64c0505 100644 --- a/website/views.py +++ b/website/views.py @@ -1,8 +1,9 @@ import re from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import render, get_object_or_404,render_to_response from django.core.context_processors import csrf +from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt from django.contrib.auth.decorators import login_required from django.db.models import Q, Max @@ -14,7 +15,7 @@ User = get_user_model() from website.models import Question, Answer, Notification, AnswerComment, FossCategory from spoken_auth.models import TutorialDetails, TutorialResources -from website.forms import NewQuestionForm, AnswerQuesitionForm,AnswerCommentForm +from website.forms import NewQuestionForm, AnswerQuestionForm,AnswerCommentForm from website.helpers import get_video_info, prettify from django.db.models import Count @@ -52,12 +53,13 @@ def get_question(request, question_id=None, pretty_url=None): if pretty_url != pretty_title: return HttpResponseRedirect('/question/'+ question_id + '/' + pretty_title) answers = question.answer_set.all() - form = AnswerQuesitionForm() + form = AnswerQuestionForm() context = { 'question': question, 'answers': answers, 'form': form } + context.update(csrf(request)) # updating views count question.views += 1 @@ -66,18 +68,20 @@ def get_question(request, question_id=None, pretty_url=None): @login_required def question_answer(request,qid): - print qid - context = {} + + dict_context = {} + if request.method == 'POST': - form = AnswerQuesitionForm(request.POST) + form = AnswerQuestionForm(request.POST) + question = get_object_or_404(Question, id=qid) + answers = question.answer_set.all() + answer = Answer() + answer.uid = request.user.id if form.is_valid(): cleaned_data = form.cleaned_data qid = cleaned_data['question'] body = cleaned_data['body'] - question = get_object_or_404(Question, id=qid) - answer = Answer() - answer.uid = request.user.id answer.question = question answer.body = body.encode('unicode_escape') answer.save() @@ -97,7 +101,7 @@ def question_answer(request,qid): Your question titled "{1}" has been answered.
Link: {2}

Regards,
- Spoken Tutorial Forums + Fossee Forums """.format( user.username, question.title, @@ -113,15 +117,17 @@ def question_answer(request,qid): email.attach_alternative(message, "text/html") email.send(fail_silently=True) # End of email send - return HttpResponseRedirect('/question/'+ str(qid) + "#answer" + str(answer.id)) - else: - form = AnswerQuesitionForm() - context = { - 'form': form - } - #print form + return HttpResponseRedirect('/question/'+ str(qid) + "#answer" + str(answer.id)) + else: + dict_context = { + 'question':question, + 'answers': answers, + 'form': form + } + + return render(request, 'website/templates/get-question.html', dict_context) - return HttpResponseRedirect('/question/'+ str(qid)) + return HttpResponseRedirect('/') @@ -235,7 +241,7 @@ def new_question(request): question = Question() question.user = request.user question.category = cleaned_data['category'] - #question.tutorial = cleaned_data['tutorial'] + question.title = cleaned_data['title'] question.body = cleaned_data['body'].encode('unicode_escape') question.views= 1 @@ -272,6 +278,7 @@ def new_question(request): context['category'] = category context['form'] = form + print form.errors context.update(csrf(request)) return render(request, 'website/templates/new-question.html', context) -- cgit