diff options
-rw-r--r-- | askbot/models/signals.py | 4 | ||||
-rw-r--r-- | askbot/views/writers.py | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/askbot/models/signals.py b/askbot/models/signals.py index d538de76..1d589563 100644 --- a/askbot/models/signals.py +++ b/askbot/models/signals.py @@ -25,6 +25,10 @@ user_registered = django.dispatch.Signal(providing_args=['user',]) #todo: move this to authentication app user_logged_in = django.dispatch.Signal(providing_args=['session']) +new_answer_posted = django.dispatch.Signal( + providing_args=['answer', 'user', 'form_data'] +) + post_updated = django.dispatch.Signal( providing_args=[ 'post', diff --git a/askbot/views/writers.py b/askbot/views/writers.py index ee10c1ab..e685a951 100644 --- a/askbot/views/writers.py +++ b/askbot/views/writers.py @@ -35,12 +35,14 @@ from django.views.decorators import csrf from askbot import exceptions as askbot_exceptions from askbot import forms from askbot import models +from askbot.models import signals from askbot.conf import settings as askbot_settings from askbot.utils import decorators from askbot.utils.forms import format_errors from askbot.utils.functions import diff_date from askbot.utils import url_utils from askbot.utils.file_utils import store_file +from askbot.utils.loading import load_module from askbot.views import context from askbot.templatetags import extra_filters_jinja as template_filters from askbot.importers.stackexchange import management as stackexchange#todo: may change @@ -555,7 +557,15 @@ def answer(request, id):#process a new answer """ question = get_object_or_404(models.Post, post_type='question', id=id) if request.method == "POST": - form = forms.AnswerForm(request.POST, user=request.user) + + 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'] @@ -581,6 +591,13 @@ def answer(request, id):#process a new answer is_private = is_private, timestamp = update_time, ) + + signals.new_answer_posted.send(None, + answer=answer, + user=user, + form_data=form.cleaned_data + ) + return HttpResponseRedirect(answer.get_absolute_url()) except askbot_exceptions.AnswerAlreadyGiven, e: request.user.message_set.create(message = unicode(e)) |