diff options
author | Zafer CAKMAK <mzcakmak@gmail.com> | 2013-04-23 20:45:37 +0000 |
---|---|---|
committer | Zafer CAKMAK <mzcakmak@gmail.com> | 2013-04-23 20:45:37 +0000 |
commit | 81af591ee3a3517caa2b70a85f526084385d2474 (patch) | |
tree | b5775039dc45a92ec449171788d4095ab9b3d658 /askbot/views | |
parent | 909b1786a1b0d42e7cb39cf6b18fffe2bc020652 (diff) | |
download | askbot-81af591ee3a3517caa2b70a85f526084385d2474.tar.gz askbot-81af591ee3a3517caa2b70a85f526084385d2474.tar.bz2 askbot-81af591ee3a3517caa2b70a85f526084385d2474.zip |
answer view is more customizable now
- answer view takes an optional form parameter to override default form. ASKBOT_NEW_ANSWER_FORM settings still works.
- save logic goes to form from view so people can save extra parameters without override view.
Diffstat (limited to 'askbot/views')
-rw-r--r-- | askbot/views/writers.py | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/askbot/views/writers.py b/askbot/views/writers.py index ac5dc8ef..bec059ef 100644 --- a/askbot/views/writers.py +++ b/askbot/views/writers.py @@ -575,7 +575,7 @@ def edit_answer(request, id): #todo: rename this function to post_new_answer @decorators.check_authorization_to_post(ugettext_lazy('Please log in to answer questions')) @decorators.check_spam('text') -def answer(request, id):#process a new answer +def answer(request, id, form_class=forms.AnswerForm):#process a new answer """view that posts new answer anonymous users post into anonymous storage @@ -586,19 +586,17 @@ def answer(request, id):#process a new answer question = get_object_or_404(models.Post, post_type='question', id=id) if request.method == "POST": - custom_class_path = getattr(settings, 'ASKBOT_NEW_ANSWER_FORM', None) - if custom_class_path: - form_class = load_module(custom_class_path) - else: - form_class = forms.AnswerForm - + #this check prevents backward compatilibility + if form_class == forms.AnswerForm: + custom_class_path = getattr(settings, 'ASKBOT_NEW_ANSWER_FORM', None) + if custom_class_path: + form_class = load_module(custom_class_path) + else: + form_class = forms.AnswerForm + form = form_class(request.POST, user=request.user) if form.is_valid(): - wiki = form.cleaned_data['wiki'] - text = form.cleaned_data['text'] - update_time = datetime.datetime.now() - if request.user.is_authenticated(): drafts = models.DraftAnswer.objects.filter( author=request.user, @@ -606,19 +604,8 @@ def answer(request, id):#process a new answer ) drafts.delete() try: - follow = form.cleaned_data['email_notify'] - is_private = form.cleaned_data['post_privately'] - user = form.get_post_user(request.user) - - answer = user.post_answer( - question = question, - body_text = text, - follow = follow, - wiki = wiki, - is_private = is_private, - timestamp = update_time, - ) + answer = form.save(question, user) signals.new_answer_posted.send(None, answer=answer, @@ -637,8 +624,8 @@ def answer(request, id):#process a new answer request.session.flush() models.AnonymousAnswer.objects.create( question=question, - wiki=wiki, - text=text, + wiki=form.cleaned_data['wiki'], + text=form.cleaned_data['text'], session_key=request.session.session_key, ip_addr=request.META['REMOTE_ADDR'], ) |